//0x6c bytes (sizeof)
struct _BUS_HANDLER
{
ULONG Version; //0x0
enum
_INTERFACE_TYPE InterfaceType; //0x4
enum
_BUS_DATA_TYPE ConfigurationType; //0x8
ULONG BusNumber; //0xc
struct
_DEVICE_OBJECT* DeviceObject; //0x10
struct
_BUS_HANDLER* ParentHandler; //0x14
VOID* BusData; //0x18
ULONG DeviceControlExtensionSize; //0x1c
struct
_SUPPORTED_RANGES* BusAddresses; //0x20
ULONG Reserved[4]; //0x24
ULONG (*GetBusData)(struct
_BUS_HANDLER* arg1, struct
_BUS_HANDLER* arg2, ULONG arg3, VOID* arg4, ULONG arg5, ULONG arg6); //0x34
ULONG (*SetBusData)(struct
_BUS_HANDLER* arg1, struct
_BUS_HANDLER* arg2, ULONG arg3, VOID* arg4, ULONG arg5, ULONG arg6); //0x38
LONG (*AdjustResourceList)(struct
_BUS_HANDLER* arg1, struct
_BUS_HANDLER* arg2, struct
_IO_RESOURCE_REQUIREMENTS_LIST** arg3); //0x3c
LONG (*AssignSlotResources)(struct
_BUS_HANDLER* arg1, struct
_BUS_HANDLER* arg2, struct
_UNICODE_STRING* arg3, struct
_UNICODE_STRING* arg4, struct
_DRIVER_OBJECT* arg5, struct
_DEVICE_OBJECT* arg6, ULONG arg7, struct
_CM_RESOURCE_LIST** arg8); //0x40
ULONG (*GetInterruptVector)(struct
_BUS_HANDLER* arg1, struct
_BUS_HANDLER* arg2, ULONG arg3, ULONG arg4, UCHAR* arg5, ULONG* arg6); //0x44
UCHAR (*TranslateBusAddress)(struct
_BUS_HANDLER* arg1, struct
_BUS_HANDLER* arg2, union
_LARGE_INTEGER arg3, ULONG* arg4, union
_LARGE_INTEGER* arg5); //0x48
VOID* Spare1; //0x4c
VOID* Spare2; //0x50
VOID* Spare3; //0x54
VOID* Spare4; //0x58
VOID* Spare5; //0x5c
VOID* Spare6; //0x60
VOID* Spare7; //0x64
VOID* Spare8; //0x68
};