42 return (Start1 <= End2 && Start2 <= End1);
78 for (
Entry = RangeList->ListHead.Flink;
79 Entry != &RangeList->ListHead;
108 if (Available || Current->
Range.
Start < Lowest)
114 if (ConflictStart !=
NULL && !Available)
115 *ConflictStart = Lowest;
139 for (
Entry = RangeList->ListHead.Flink;
140 Entry != &RangeList->ListHead;
215 if (RangeEntry ==
NULL)
230 if (RangeList->Count == 0)
241 Entry = RangeList->ListHead.Flink;
242 while (
Entry != &RangeList->ListHead)
248 DPRINT(
"Insert before current\n");
300 CopyRangeList->Flags = RangeList->Flags;
302 Entry = RangeList->ListHead.Flink;
303 while (
Entry != &RangeList->ListHead)
308 if (NewEntry ==
NULL)
318 CopyRangeList->Count++;
323 CopyRangeList->Stamp++;
355 Entry = RangeList->ListHead.Flink;
356 while (
Entry != &RangeList->ListHead)
406 Entry = RangeList->ListHead.Flink;
407 while (
Entry != &RangeList->ListHead)
464 IN UCHAR AttributeAvailableMask,
488 if (Candidate < Minimum)
493 CandidateEnd = Candidate + (
Length - 1);
499 AttributeAvailableMask,
504 DPRINT(
"Found range: %I64x\n", Candidate);
514 if (ConflictStart == 0)
562 RangeList->Flags = 0;
563 RangeList->Count = 0;
590 Iterator->RangeListHead = &RangeList->ListHead;
632 Iterator->RangeListHead = &RangeList->ListHead;
733 RangeList->Flags = 0;
734 RangeList->Count = 0;
735 RangeList->Stamp = 0;
793 Entry = RangeList->ListHead.Flink;
794 while (
Entry != &RangeList->ListHead)
815 Entry = RangeList->ListHead.Flink;
816 while (
Entry != &RangeList->ListHead)
851 GapStart = NextStart;
913 IN UCHAR AttributeAvailableMask,
925 AttributeAvailableMask,
static _Out_opt_ PULONGLONG Start
PVOID NTAPI RtlpAllocateMemory(ULONG Bytes, ULONG Tag)
VOID NTAPI RtlpFreeMemory(PVOID Mem, ULONG Tag)
#define NT_SUCCESS(StatCode)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID Owner
#define RTL_RANGE_LIST_ADD_IF_CONFLICT
#define RTL_RANGE_LIST_ADD_SHARED
#define RTL_RANGE_LIST_NULL_CONFLICT_OK
BOOLEAN(NTAPI * PRTL_CONFLICT_RANGE_CALLBACK)(PVOID Context, struct _RTL_RANGE *Range)
#define RTL_RANGE_LIST_SHARED_OK
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define STATUS_NO_MORE_ENTRIES
#define STATUS_RANGE_LIST_CONFLICT
#define STATUS_RANGE_NOT_FOUND
NTSTATUS NTAPI RtlDeleteOwnersRanges(IN OUT PRTL_RANGE_LIST RangeList, IN PVOID Owner)
NTSTATUS NTAPI RtlInvertRangeListEx(OUT PRTL_RANGE_LIST InvertedRangeList, IN PRTL_RANGE_LIST RangeList, IN UCHAR Attributes, IN PVOID UserData OPTIONAL, IN PVOID Owner OPTIONAL)
NTSTATUS NTAPI RtlFindRange(IN PRTL_RANGE_LIST RangeList, IN ULONGLONG Minimum, IN ULONGLONG Maximum, IN ULONG Length, IN ULONG Alignment, IN ULONG Flags, IN UCHAR AttributeAvailableMask, IN PVOID Context OPTIONAL, IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL, OUT PULONGLONG Start)
NTSTATUS NTAPI RtlGetLastRange(IN PRTL_RANGE_LIST RangeList, OUT PRTL_RANGE_LIST_ITERATOR Iterator, OUT PRTL_RANGE *Range)
NTSTATUS NTAPI RtlGetFirstRange(IN PRTL_RANGE_LIST RangeList, OUT PRTL_RANGE_LIST_ITERATOR Iterator, OUT PRTL_RANGE *Range)
VOID NTAPI RtlInitializeRangeList(IN OUT PRTL_RANGE_LIST RangeList)
NTSTATUS NTAPI RtlCopyRangeList(OUT PRTL_RANGE_LIST CopyRangeList, IN PRTL_RANGE_LIST RangeList)
NTSTATUS NTAPI RtlIsRangeAvailable(IN PRTL_RANGE_LIST RangeList, IN ULONGLONG Start, IN ULONGLONG End, IN ULONG Flags, IN UCHAR AttributeAvailableMask, IN PVOID Context OPTIONAL, IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL, OUT PBOOLEAN Available)
static BOOLEAN RtlpOverlaps(_In_ ULONGLONG Start1, _In_ ULONGLONG End1, _In_ ULONGLONG Start2, _In_ ULONGLONG End2)
struct _RTL_RANGE_ENTRY * PRTL_RANGE_ENTRY
NTSTATUS NTAPI RtlGetNextRange(IN OUT PRTL_RANGE_LIST_ITERATOR Iterator, OUT PRTL_RANGE *Range, IN BOOLEAN MoveForwards)
NTSTATUS NTAPI RtlDeleteRange(IN OUT PRTL_RANGE_LIST RangeList, IN ULONGLONG Start, IN ULONGLONG End, IN PVOID Owner)
VOID NTAPI RtlFreeRangeList(IN PRTL_RANGE_LIST RangeList)
NTSTATUS NTAPI RtlAddRange(IN OUT PRTL_RANGE_LIST RangeList, IN ULONGLONG Start, IN ULONGLONG End, IN UCHAR Attributes, IN ULONG Flags, IN PVOID UserData OPTIONAL, IN PVOID Owner OPTIONAL)
NTSTATUS NTAPI RtlMergeRangeLists(OUT PRTL_RANGE_LIST MergedRangeList, IN PRTL_RANGE_LIST RangeList1, IN PRTL_RANGE_LIST RangeList2, IN ULONG Flags)
struct _RTL_RANGE_ENTRY RTL_RANGE_ENTRY
static BOOLEAN RtlpConflictsOnAdd(_In_ PRTL_RANGE_LIST RangeList, _In_ ULONGLONG Start, _In_ ULONGLONG End, _In_ ULONG Flags)
NTSTATUS NTAPI RtlInvertRangeList(OUT PRTL_RANGE_LIST InvertedRangeList, IN PRTL_RANGE_LIST RangeList)
static BOOLEAN RtlpWindowIsAvailable(_In_ PRTL_RANGE_LIST RangeList, _In_ ULONGLONG Start, _In_ ULONGLONG End, _In_ ULONG Flags, _In_ UCHAR AttributeAvailableMask, _In_opt_ PVOID Context, _In_opt_ PRTL_CONFLICT_RANGE_CALLBACK Callback, _Out_opt_ PULONGLONG ConflictStart)
STDMETHOD() Next(THIS_ ULONG celt, IAssociationElement *pElement, ULONG *pceltFetched) PURE
PULONG MinorVersion OPTIONAL
struct _LIST_ENTRY * Blink
struct _LIST_ENTRY * Flink
#define RtlCopyMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR Iterator
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
_Must_inspect_result_ _In_ ULONG Flags