//0x150 bytes (sizeof)
struct _ARBITER_INSTANCE
{
ULONG Signature; //0x0
struct
_KEVENT* MutexEvent; //0x8
USHORT* Name; //0x10
USHORT* OrderingName; //0x18
LONG ResourceType; //0x20
struct
_RTL_RANGE_LIST* Allocation; //0x28
struct
_RTL_RANGE_LIST* PossibleAllocation; //0x30
struct
_ARBITER_ORDERING_LIST OrderingList; //0x38
struct
_ARBITER_ORDERING_LIST ReservedList; //0x48
LONG ReferenceCount; //0x58
struct
_ARBITER_INTERFACE* Interface; //0x60
ULONG AllocationStackMaxSize; //0x68
struct
_ARBITER_ALLOCATION_STATE* AllocationStack; //0x70
LONG (*UnpackRequirement)(struct
_IO_RESOURCE_DESCRIPTOR* arg1, ULONGLONG* arg2, ULONGLONG* arg3, ULONGLONG* arg4, ULONGLONG* arg5); //0x78
LONG (*PackResource)(struct
_IO_RESOURCE_DESCRIPTOR* arg1, ULONGLONG arg2, struct
_CM_PARTIAL_RESOURCE_DESCRIPTOR* arg3); //0x80
LONG (*UnpackResource)(struct
_CM_PARTIAL_RESOURCE_DESCRIPTOR* arg1, ULONGLONG* arg2, ULONGLONG* arg3); //0x88
LONG (*ScoreRequirement)(struct
_IO_RESOURCE_DESCRIPTOR* arg1); //0x90
LONG (*TestAllocation)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_TEST_ALLOCATION_PARAMETERS* arg2); //0x98
LONG (*RetestAllocation)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_RETEST_ALLOCATION_PARAMETERS* arg2); //0xa0
LONG (*CommitAllocation)(struct
_ARBITER_INSTANCE* arg1); //0xa8
LONG (*RollbackAllocation)(struct
_ARBITER_INSTANCE* arg1); //0xb0
LONG (*BootAllocation)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_BOOT_ALLOCATION_PARAMETERS* arg2); //0xb8
LONG (*QueryArbitrate)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_QUERY_ARBITRATE_PARAMETERS* arg2); //0xc0
LONG (*QueryConflict)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_QUERY_CONFLICT_PARAMETERS* arg2); //0xc8
LONG (*AddReserved)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_ADD_RESERVED_PARAMETERS* arg2); //0xd0
LONG (*StartArbiter)(struct
_ARBITER_INSTANCE* arg1, struct
_CM_RESOURCE_LIST* arg2); //0xd8
LONG (*PreprocessEntry)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_ALLOCATION_STATE* arg2); //0xe0
LONG (*AllocateEntry)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_ALLOCATION_STATE* arg2); //0xe8
UCHAR (*GetNextAllocationRange)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_ALLOCATION_STATE* arg2); //0xf0
UCHAR (*FindSuitableRange)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_ALLOCATION_STATE* arg2); //0xf8
VOID (*AddAllocation)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_ALLOCATION_STATE* arg2); //0x100
VOID (*BacktrackAllocation)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_ALLOCATION_STATE* arg2); //0x108
UCHAR (*OverrideConflict)(struct
_ARBITER_INSTANCE* arg1, struct
_ARBITER_ALLOCATION_STATE* arg2); //0x110
LONG (*InitializeRangeList)(struct
_ARBITER_INSTANCE* arg1, ULONG arg2, struct
_CM_PARTIAL_RESOURCE_DESCRIPTOR* arg3, struct
_RTL_RANGE_LIST* arg4); //0x118
UCHAR TransactionInProgress; //0x120
struct
_KEVENT* TransactionEvent; //0x128
VOID* Extension; //0x130
struct
_DEVICE_OBJECT* BusDeviceObject; //0x138
VOID* ConflictCallbackContext; //0x140
UCHAR (*ConflictCallback)(VOID* arg1, struct
_RTL_RANGE* arg2); //0x148
};