struct _ARBITER_INSTANCE
{
ULONG Signature;
struct _KEVENT* MutexEvent;
WCHAR* Name;
WCHAR* OrderingName;
LONG ResourceType;
struct _RTL_RANGE_LIST* Allocation;
struct _RTL_RANGE_LIST* PossibleAllocation;
struct _ARBITER_ORDERING_LIST OrderingList;
struct _ARBITER_ORDERING_LIST ReservedList;
LONG ReferenceCount;
struct _ARBITER_INTERFACE* Interface;
ULONG AllocationStackMaxSize;
struct _ARBITER_ALLOCATION_STATE* AllocationStack;
LONG (*UnpackRequirement)(
struct _IO_RESOURCE_DESCRIPTOR* arg1,
ULONGLONG* arg2,
ULONGLONG* arg3,
ULONGLONG* arg4,
ULONGLONG* arg5);
LONG (*PackResource)(
struct _IO_RESOURCE_DESCRIPTOR* arg1,
ULONGLONG arg2,
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR* arg3);
LONG (*UnpackResource)(
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR* arg1,
ULONGLONG* arg2,
ULONGLONG* arg3);
LONG (*ScoreRequirement)(
struct _IO_RESOURCE_DESCRIPTOR* arg1);
LONG (*TestAllocation)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_TEST_ALLOCATION_PARAMETERS* arg2);
LONG (*RetestAllocation)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_RETEST_ALLOCATION_PARAMETERS* arg2);
LONG (*CommitAllocation)(
struct _ARBITER_INSTANCE* arg1);
LONG (*RollbackAllocation)(
struct _ARBITER_INSTANCE* arg1);
LONG (*BootAllocation)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_BOOT_ALLOCATION_PARAMETERS* arg2);
LONG (*QueryArbitrate)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_QUERY_ARBITRATE_PARAMETERS* arg2);
LONG (*QueryConflict)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_QUERY_CONFLICT_PARAMETERS* arg2);
LONG (*AddReserved)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_ADD_RESERVED_PARAMETERS* arg2);
LONG (*StartArbiter)(
struct _ARBITER_INSTANCE* arg1,
struct _CM_RESOURCE_LIST* arg2);
LONG (*PreprocessEntry)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_ALLOCATION_STATE* arg2);
LONG (*AllocateEntry)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_ALLOCATION_STATE* arg2);
UCHAR (*GetNextAllocationRange)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_ALLOCATION_STATE* arg2);
UCHAR (*FindSuitableRange)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_ALLOCATION_STATE* arg2);
VOID (*AddAllocation)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_ALLOCATION_STATE* arg2);
VOID (*BacktrackAllocation)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_ALLOCATION_STATE* arg2);
UCHAR (*OverrideConflict)(
struct _ARBITER_INSTANCE* arg1,
struct _ARBITER_ALLOCATION_STATE* arg2);
LONG (*InitializeRangeList)(
struct _ARBITER_INSTANCE* arg1,
ULONG arg2,
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR* arg3,
struct _RTL_RANGE_LIST* arg4);
UCHAR TransactionInProgress;
struct _KEVENT* TransactionEvent;
VOID* Extension;
struct _DEVICE_OBJECT* BusDeviceObject;
VOID* ConflictCallbackContext;
UCHAR (*ConflictCallback)(
VOID* arg1,
struct _RTL_RANGE* arg2);
};