typedef struct _ARBITER_INSTANCE
{
    unsigned long Signature;
    KEVENT *MutexEvent;
    unsigned short *Name;
    unsigned short *OrderingName;
    int ResourceType;
    RTL_RANGE_LIST *Allocation;
    RTL_RANGE_LIST *PossibleAllocation;
    ARBITER_ORDERING_LIST OrderingList;
    ARBITER_ORDERING_LIST ReservedList;
    long ReferenceCount;
    ARBITER_INTERFACE *Interface;
    unsigned long AllocationStackMaxSize;
    ARBITER_ALLOCATION_STATE *AllocationStack;
    long (*UnpackRequirement)(IO_RESOURCE_DESCRIPTOR *, unsigned __int64 *, unsigned __int64 *, unsigned __int64 *, unsigned __int64 *);
    long (*PackResource)(IO_RESOURCE_DESCRIPTOR *, unsigned __int64, CM_PARTIAL_RESOURCE_DESCRIPTOR *);
    long (*UnpackResource)(CM_PARTIAL_RESOURCE_DESCRIPTOR *, unsigned __int64 *, unsigned __int64 *);
    long (*ScoreRequirement)(IO_RESOURCE_DESCRIPTOR *);
    long (*TestAllocation)(ARBITER_INSTANCE *, ARBITER_TEST_ALLOCATION_PARAMETERS *);
    long (*RetestAllocation)(ARBITER_INSTANCE *, ARBITER_RETEST_ALLOCATION_PARAMETERS *);
    long (*CommitAllocation)(ARBITER_INSTANCE *);
    long (*RollbackAllocation)(ARBITER_INSTANCE *);
    long (*BootAllocation)(ARBITER_INSTANCE *, ARBITER_BOOT_ALLOCATION_PARAMETERS *);
    long (*QueryArbitrate)(ARBITER_INSTANCE *, ARBITER_QUERY_ARBITRATE_PARAMETERS *);
    long (*QueryConflict)(ARBITER_INSTANCE *, ARBITER_QUERY_CONFLICT_PARAMETERS *);
    long (*AddReserved)(ARBITER_INSTANCE *, ARBITER_ADD_RESERVED_PARAMETERS *);
    long (*StartArbiter)(ARBITER_INSTANCE *, CM_RESOURCE_LIST *);
    long (*PreprocessEntry)(ARBITER_INSTANCE *, ARBITER_ALLOCATION_STATE *);
    long (*AllocateEntry)(ARBITER_INSTANCE *, ARBITER_ALLOCATION_STATE *);
    unsigned char (*GetNextAllocationRange)(ARBITER_INSTANCE *, ARBITER_ALLOCATION_STATE *);
    unsigned char (*FindSuitableRange)(ARBITER_INSTANCE *, ARBITER_ALLOCATION_STATE *);
    void (*AddAllocation)(ARBITER_INSTANCE *, ARBITER_ALLOCATION_STATE *);
    void (*BacktrackAllocation)(ARBITER_INSTANCE *, ARBITER_ALLOCATION_STATE *);
    unsigned char (*OverrideConflict)(ARBITER_INSTANCE *, ARBITER_ALLOCATION_STATE *);
    long (*InitializeRangeList)(ARBITER_INSTANCE *, unsigned long, CM_PARTIAL_RESOURCE_DESCRIPTOR *, RTL_RANGE_LIST *);
    unsigned char TransactionInProgress;
    KEVENT *TransactionEvent;
    void *Extension;
    DEVICE_OBJECT *BusDeviceObject;
    void *ConflictCallbackContext;
    unsigned char (*ConflictCallback)(void *, RTL_RANGE *);
    wchar_t PdoDescriptionString[336];
    char PdoSymbolicNameString[672];
    wchar_t PdoAddressString[1];
} ARBITER_INSTANCE, *PARBITER_INSTANCE;