17#define ARBITER_ORDERING_GRANULARITY 16
18#define ARBITER_ORDERING_LIMIT 1024
20#define ARBP_POLICY_ROOT L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Arbiters\\"
21#define ARBP_LONGEST_SUBKEY L"ReservedResources"
37 if (OrderingList->Orderings ==
NULL)
39 OrderingList->Count = 0;
40 OrderingList->Maximum = 0;
44 OrderingList->Count = 0;
57 if (OrderingList->Orderings !=
NULL)
60 OrderingList->Orderings =
NULL;
61 OrderingList->Count = 0;
62 OrderingList->Maximum = 0;
81 if (OrderingList->Count == OrderingList->Maximum)
86 NewMaximum = OrderingList->Maximum ? (
ULONG)OrderingList->Maximum * 2
97 if (OrderingList->Orderings !=
NULL)
104 OrderingList->Maximum = (
UINT16)NewMaximum;
105 OrderingList->Orderings = NewArray;
108 OrderingList->Orderings[OrderingList->Count].
Start =
Start;
109 OrderingList->Orderings[OrderingList->Count].End = End;
110 OrderingList->Count++;
145 RtlInitEmptyUnicodeString(&KeyPath, PathBuffer,
sizeof(PathBuffer));
255 if (TargetChars != 0 &&
274 DataEnd = (
PUCHAR)Requirements +
Value->DataLength;
275 Alternative = &Requirements->
List[0];
static _Out_opt_ PULONGLONG Start
COMPILER_DEPENDENT_UINT64 UINT64
NTSTATUS(NTAPI * PARB_TRANSLATE_ORDERING)(_Out_ PIO_RESOURCE_DESCRIPTOR OutIoDescriptor, _In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
_In_opt_ PWSTR SubkeyName
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
#define ExAllocatePoolWithTag(hernya, size, tag)
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
#define ExFreePoolWithTag(_P, _T)
#define InitializeObjectAttributes(p, n, a, r, s)
@ KeyValueFullInformationAlign64
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define REG_RESOURCE_REQUIREMENTS_LIST
#define UNREFERENCED_PARAMETER(P)
VOID(NTAPI * PARB_RANGE_CALLBACK)(_In_ PARBITER_INSTANCE Arbiter, _In_opt_ PVOID Context, _In_ ULONGLONG Start, _In_ ULONGLONG End)
static BOOLEAN ArbpDescriptorMatchesArbiter(_In_ PARBITER_INSTANCE Arbiter, _In_ UCHAR DescriptorType)
static NTSTATUS ArbpReadPolicyValue(_In_ HANDLE KeyHandle, _In_ PCWSTR ValueName, _Out_ PKEY_VALUE_FULL_INFORMATION *Value)
static NTSTATUS ArbpOpenPolicySubkey(_In_ PCWSTR SubkeyName, _Out_ PHANDLE KeyHandle)
#define ARBITER_ORDERING_LIMIT
static NTSTATUS ArbpCreateOrderingList(_Out_ PARBITER_ORDERING_LIST OrderingList)
#define ARBP_LONGEST_SUBKEY
NTSTATUS NTAPI ArbiterLibDefaultAssignmentOrdering(_Inout_ PARBITER_INSTANCE Arbiter, _In_ PCWSTR AllocationOrderName, _In_ PCWSTR ReservedResourcesName, _In_opt_ PARB_TRANSLATE_ORDERING TranslateOrderingFunction)
static VOID NTAPI ArbpAddOrderingCallback(_In_ PARBITER_INSTANCE Arbiter, _In_opt_ PVOID Context, _In_ ULONGLONG Start, _In_ ULONGLONG End)
static NTSTATUS ArbpForEachRegistryRange(_In_ PARBITER_INSTANCE Arbiter, _In_ PCWSTR Subkey, _In_ PCWSTR ValueName, _In_ PARB_RANGE_CALLBACK Callback, _In_opt_ PVOID Context)
VOID NTAPI ArbiterLibFreeOrderingList(_Inout_ PARBITER_ORDERING_LIST OrderingList)
#define ARBITER_ORDERING_GRANULARITY
NTSTATUS NTAPI ArbiterLibAddOrdering(_Inout_ PARBITER_ORDERING_LIST OrderingList, _In_ UINT64 Start, _In_ UINT64 End)
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
for(i=0;i< sizeof(testsuite)/sizeof(testsuite[0]);++i) ok(call_test(testsuite[i].func)
#define CmResourceTypeMemory
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_BUFFER_OVERFLOW
IO_RESOURCE_DESCRIPTOR Descriptors[1]
#define RtlCopyMemory(Destination, Source, Length)
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ ULONG _In_ PVOID _In_ LONG DescriptorType
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
#define CmResourceTypeMemoryLarge
struct _IO_RESOURCE_REQUIREMENTS_LIST * PIO_RESOURCE_REQUIREMENTS_LIST