72#if (NTDDI_VERSION >= NTDDI_VISTA)
111#if (NTDDI_VERSION >= NTDDI_VISTA)
179#if (NTDDI_VERSION >= NTDDI_VISTA)
189#if (NTDDI_VERSION >= NTDDI_VISTA)
207#if (NTDDI_VERSION >= NTDDI_VISTA)
217#if (NTDDI_VERSION >= NTDDI_VISTA)
223 Parameters->Parameters.QueryConflict.ConflictingResource,
224 Parameters->Parameters.QueryConflict.ConflictCount,
225 Parameters->Parameters.QueryConflict.Conflicts);
230#if (NTDDI_VERSION >= NTDDI_VISTA)
255#if (NTDDI_VERSION >= NTDDI_VISTA)
362 Windows[Insert] = Windows[Insert - 1];
416#if (NTDDI_VERSION >= NTDDI_VISTA)
478 if (StartResources ==
NULL || StartResources->Count == 0)
481 Full = &StartResources->List[0];
483#if (NTDDI_VERSION >= NTDDI_VISTA)
485 return Arbiter->InitializeRangeList(Arbiter,
486 Full->PartialResourceList.Count,
487 Full->PartialResourceList.PartialDescriptors,
488 Arbiter->Allocation);
491 Full->PartialResourceList.Count,
492 Full->PartialResourceList.PartialDescriptors,
493 Arbiter->Allocation);
static _Out_opt_ PULONGLONG Start
#define ARBITER_MAXIMUM_ADDRESS
struct _ARBITER_INSTANCE * PARBITER_INSTANCE
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
#define STATUS_NOT_IMPLEMENTED
_In_ HANDLE _In_ CONST PDXGKMDT_OPM_GET_INFO_PARAMETERS Parameters
#define NT_SUCCESS(StatCode)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeSetEvent(pEvt, foo, foo2)
VOID NTAPI KeClearEvent(IN PKEVENT Event)
static ULONG ResourceCount
#define ExFreePoolWithTag(_P, _T)
NTSYSAPI NTSTATUS NTAPI RtlDeleteOwnersRanges(_Inout_ PRTL_RANGE_LIST RangeList, _In_ _Maybenull_ PVOID Owner)
_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
NTSYSAPI NTSTATUS NTAPI RtlAddRange(_Inout_ PRTL_RANGE_LIST RangeList, _In_ ULONGLONG Start, _In_ ULONGLONG End, _In_ UCHAR Attributes, _In_ ULONG Flags, _In_opt_ PVOID UserData, _In_opt_ PVOID Owner)
NTSYSAPI VOID NTAPI RtlInitializeRangeList(_Out_ PRTL_RANGE_LIST RangeList)
NTSYSAPI VOID NTAPI RtlFreeRangeList(_In_ PRTL_RANGE_LIST RangeList)
#define RTL_RANGE_LIST_ADD_IF_CONFLICT
#define RTL_RANGE_LIST_ADD_SHARED
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG _In_ ULONG Length
NTSTATUS NTAPI ArbiterLibInitializeRangeList(_In_ PARBITER_INSTANCE Arbiter, _In_ ULONG ResourceCount, _In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Resources, _Inout_ PRTL_RANGE_LIST RangeList)
The InitializeRangeList callback default.
static NTSTATUS ArbpSeedRangeList(_In_ PARBITER_INSTANCE Arbiter, _In_ ULONG ResourceCount, _In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Resources, _Inout_ PRTL_RANGE_LIST RangeList)
NTSTATUS NTAPI ArbiterLibAddReserved(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ADD_RESERVED_PARAMETERS Parameters)
The AddReserved action default: nothing to reserve.
NTSTATUS NTAPI ArbiterLibQueryArbitrate(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_QUERY_ARBITRATE_PARAMETERS Parameters)
The QueryArbitrate action default: reports that this arbiter is willing to arbitrate the given list.
NTSTATUS NTAPI ArbiterLibStartArbiter(_In_ PARBITER_INSTANCE Arbiter, _In_ PCM_RESOURCE_LIST StartResources)
The StartArbiter action default: seeds the committed allocation with the windows the bus decodes,...
NTSTATUS NTAPI ArbiterLibHandler(_In_ PVOID Context, _In_ ARBITER_ACTION Action, _Inout_ PARBITER_PARAMETERS Parameters)
The single ARBITER_ACTION dispatcher every exported ARBITER_INTERFACE points its ArbiterHandler at; C...
VOID NTAPI ArbiterLibReleaseResources(_In_ PARBITER_INSTANCE Arbiter, _In_ PVOID Owner)
Releases every committed range owned by Owner.
static VOID ArbpReleaseLock(_In_ PARBITER_INSTANCE Arbiter)
Releases the arbiter's per-instance lock.
static VOID ArbpAcquireLock(_In_ PARBITER_INSTANCE Arbiter)
Acquires the arbiter's per-instance lock: one arbitration at a time.
struct _ARBITER_SEED_WINDOW ARBITER_SEED_WINDOW
Seeds a range list with the resources the bus actually decodes: every descriptor of the arbiter's res...
struct _ARBITER_SEED_WINDOW * PARBITER_SEED_WINDOW
VOID NTAPI ArbiterLibReserveRange(_In_ PARBITER_INSTANCE Arbiter, _In_ ULONGLONG Start, _In_ ULONGLONG End, _In_opt_ PVOID Owner, _In_ BOOLEAN Shared)
Commits a single [Start, End] range into the arbiter as an ordinary allocation owned by Owner.
STDMETHOD() Next(THIS_ ULONG celt, IAssociationElement *pElement, ULONG *pceltFetched) PURE
PARB_RETEST_ALLOCATION RetestAllocation
BOOLEAN TransactionInProgress
PARB_QUERY_ARBITRATE QueryArbitrate
PARB_BOOT_ALLOCATION BootAllocation
PARB_TEST_ALLOCATION TestAllocation
PARB_QUERY_CONFLICT QueryConflict
PARB_COMMIT_ALLOCATION CommitAllocation
PARB_ROLLBACK_ALLOCATION RollbackAllocation
Seeds a range list with the resources the bus actually decodes: every descriptor of the arbiter's res...
#define STATUS_INVALID_PARAMETER
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
@ ArbiterActionQueryConflict
@ ArbiterActionQueryArbitrate
@ ArbiterActionBootAllocation
@ ArbiterActionWriteReservedResources
@ ArbiterActionAddReserved
@ ArbiterActionCommitAllocation
@ ArbiterActionRollbackAllocation
@ ArbiterActionRetestAllocation
@ ArbiterActionQueryAllocatedResources
@ ArbiterActionTestAllocation
enum _ARBITER_ACTION ARBITER_ACTION