11#pragma alloc_text (PAGE, Bus_PDO_PnP)
12#pragma alloc_text (PAGE, Bus_PDO_QueryDeviceCaps)
13#pragma alloc_text (PAGE, Bus_PDO_QueryDeviceId)
14#pragma alloc_text (PAGE, Bus_PDO_QueryDeviceText)
15#pragma alloc_text (PAGE, Bus_PDO_QueryResources)
16#pragma alloc_text (PAGE, Bus_PDO_QueryResourceRequirements)
17#pragma alloc_text (PAGE, Bus_PDO_QueryDeviceRelations)
18#pragma alloc_text (PAGE, Bus_PDO_QueryBusInformation)
19#pragma alloc_text (PAGE, Bus_GetDeviceCapabilities)
67 &GUID_DEVICE_SYS_BUTTON,
71 else if (
device->flags.hardware_id &&
75 &GUID_DEVICE_THERMAL_ZONE,
79 else if (
device->flags.hardware_id &&
87 else if (
device->flags.hardware_id &&
95 else if (
device->flags.hardware_id &&
99 &GUID_DEVICE_PROCESSOR,
347 deviceCapabilities=
stack->Parameters.DeviceCapabilities.Capabilities;
353 if (deviceCapabilities->Version != 1 ||
359 deviceCapabilities->D1Latency = 0;
360 deviceCapabilities->D2Latency = 0;
361 deviceCapabilities->D3Latency = 0;
370 if (!
device->power.states[
i].flags.valid)
381 deviceCapabilities->D1Latency =
device->power.states[
i].latency;
386 deviceCapabilities->D2Latency =
device->power.states[
i].latency;
391 deviceCapabilities->D3Latency =
device->power.states[
i].latency;
400 deviceCapabilities->DeviceD1 =
402 deviceCapabilities->DeviceD2 =
405 deviceCapabilities->WakeFromD0 =
FALSE;
406 deviceCapabilities->WakeFromD1 =
TRUE;
407 deviceCapabilities->WakeFromD2 =
FALSE;
408 deviceCapabilities->WakeFromD3 =
FALSE;
412 deviceCapabilities->LockSupported =
device->flags.lockable;
413 deviceCapabilities->EjectSupported =
device->flags.ejectable;
414 deviceCapabilities->HardwareDisabled = !
device->status.enabled && !
device->status.functional;
416 deviceCapabilities->SurpriseRemovalOK =
device->flags.surprise_removal_ok;
417 deviceCapabilities->UniqueID =
device->flags.unique_id;
418 deviceCapabilities->NoDisplayInUI = !
device->status.show_in_ui;
419 deviceCapabilities->Address =
device->pnp.bus_address;
423 (
device->flags.hardware_id &&
430 deviceCapabilities->RawDeviceOK =
TRUE;
433 deviceCapabilities->SilentInstall =
FALSE;
434 deviceCapabilities->UINumber = (
ULONG)-1;
456 switch (
stack->Parameters.QueryId.IdType) {
485 L"ACPI\\FixedButton");
513 if (
Device->flags.unique_id)
553 if (!
Device->flags.hardware_id)
585 L"ACPI\\FixedButton");
621 if (!
Device->flags.hardware_id)
643 else if (
Device->flags.compatible_ids)
645 for (
i = 0;
i <
Device->pnp.cid_list->Count;
i++)
649 Device->pnp.cid_list->Ids[
i].String);
654 Device->pnp.cid_list->Ids[
i].String);
700 switch (
stack->Parameters.QueryDeviceText.DeviceTextType) {
704 if (!
Irp->IoStatus.Information) {
706 Temp =
L"Programmable interrupt controller";
708 Temp =
L"System timer";
710 Temp =
L"DMA controller";
714 Temp =
L"Parallel port";
716 Temp =
L"Serial port";
718 Temp =
L"Disk controller";
720 Temp =
L"Disk controller";
722 Temp =
L"Display adapter";
724 Temp =
L"Bus controller";
726 Temp =
L"PCMCIA controller";
728 Temp =
L"Mouse device";
730 Temp =
L"Network adapter";
732 Temp =
L"SCSI controller";
734 Temp =
L"Multimedia device";
738 Temp =
L"Power Button";
740 Temp =
L"Sleep Button";
742 Temp =
L"Lid Switch";
744 Temp =
L"ACPI Embedded Controller";
749 Temp =
L"PCI Root Bridge";
751 Temp =
L"ACPI Battery";
753 Temp =
L"PCI Interrupt Link";
755 Temp =
L"ACPI Power Resource";
764 Temp =
L"ACPI Thermal Zone";
766 Temp =
L"Smart Battery";
768 Temp =
L"AC Adapter";
773 Temp =
L"ACPI Fixed Feature Button";
775 Temp =
L"Other ACPI device";
806 ULONG NumberOfResources = 0;
812 ULONG ResourceListSize;
819 return Irp->IoStatus.Status;
831 if (AcpiStatus !=
AE_OK)
834 if (
device->flags.unique_id)
842 DPRINT1(
"Failed to find a bus number\n");
847 DPRINT(
"Using _BBN for bus number\n");
863 ResourceDescriptor =
ResourceList->List[0].PartialResourceList.PartialDescriptors;
880 return Irp->IoStatus.Status;
890 DPRINT1(
"AcpiGetCurrentResources #2 failed (0x%x)\n", AcpiStatus);
964 ResourceList->List[0].PartialResourceList.Count = NumberOfResources;
965 ResourceDescriptor =
ResourceList->List[0].PartialResourceList.PartialDescriptors;
984 ResourceDescriptor->
Flags =
990 ResourceDescriptor++;
1003 ResourceDescriptor->
Flags =
1009 ResourceDescriptor++;
1019 ResourceDescriptor->
Flags = 0;
1020 switch (dma_data->
Type)
1036 ResourceDescriptor++;
1050 ResourceDescriptor->
u.
Port.Start.QuadPart = io_data->
Minimum;
1053 ResourceDescriptor++;
1062 ResourceDescriptor->
u.
Port.Start.QuadPart = io_data->
Address;
1065 ResourceDescriptor++;
1077 ResourceDescriptor->
Flags = 0;
1095 ResourceDescriptor->
Flags = 0;
1100 switch (addr16_data->Info.Mem.Caching)
1109 ResourceDescriptor++;
1121 ResourceDescriptor->
Flags = 0;
1139 ResourceDescriptor->
Flags = 0;
1144 switch (addr32_data->Info.Mem.Caching)
1153 ResourceDescriptor++;
1163 DPRINT1(
"64-bit bus address is not supported!\n");
1166 ResourceDescriptor->
Flags = 0;
1184 ResourceDescriptor->
Flags = 0;
1189 switch (addr64_data->Info.Mem.Caching)
1198 ResourceDescriptor++;
1208 DPRINT1(
"64-bit bus address is not supported!\n");
1211 ResourceDescriptor->
Flags = 0;
1229 ResourceDescriptor->
Flags = 0;
1234 switch (addr64_data->Info.Mem.Caching)
1243 ResourceDescriptor++;
1256 ResourceDescriptor->
u.
Memory.Start.QuadPart = mem24_data->
Minimum;
1259 ResourceDescriptor++;
1267 ResourceDescriptor->
Flags = 0;
1272 ResourceDescriptor->
u.
Memory.Start.QuadPart = mem32_data->
Minimum;
1275 ResourceDescriptor++;
1283 ResourceDescriptor->
Flags = 0;
1288 ResourceDescriptor->
u.
Memory.Start.QuadPart = memfixed32_data->
Address;
1291 ResourceDescriptor++;
1313 ULONG NumberOfResources = 0;
1317 ULONG i, RequirementsListSize;
1327 return Irp->IoStatus.Status;
1334 return Irp->IoStatus.Status;
1351 return Irp->IoStatus.Status;
1367 DPRINT1(
"AcpiGetCurrentResources #2 failed (0x%x)\n", AcpiStatus);
1372 SeenStartDependent =
FALSE;
1379 if (SeenStartDependent)
1383 SeenStartDependent =
TRUE;
1415 NumberOfResources++;
1424 NumberOfResources++;
1454 SeenStartDependent =
FALSE;
1460 if (SeenStartDependent)
1464 SeenStartDependent =
TRUE;
1479 RequirementDescriptor->
u.
Interrupt.MinimumVector =
1482 RequirementDescriptor++;
1495 RequirementDescriptor->
u.
Interrupt.MinimumVector =
1498 RequirementDescriptor++;
1508 RequirementDescriptor->
Flags = 0;
1509 switch (dma_data->
Type)
1526 RequirementDescriptor->
u.
Dma.MinimumChannel =
1527 RequirementDescriptor->
u.
Dma.MaximumChannel = dma_data->
Channels[
i];
1528 RequirementDescriptor++;
1545 RequirementDescriptor->
u.
Port.MinimumAddress.QuadPart = io_data->
Minimum;
1548 RequirementDescriptor++;
1559 RequirementDescriptor->
u.
Port.Alignment = 1;
1560 RequirementDescriptor->
u.
Port.MinimumAddress.QuadPart = io_data->
Address;
1563 RequirementDescriptor++;
1576 RequirementDescriptor->
Flags = 0;
1596 RequirementDescriptor->
Flags = 0;
1601 switch (addr16_data->Info.Mem.Caching)
1611 RequirementDescriptor++;
1624 RequirementDescriptor->
Flags = 0;
1644 RequirementDescriptor->
Flags = 0;
1649 switch (addr32_data->Info.Mem.Caching)
1659 RequirementDescriptor++;
1670 DPRINT1(
"64-bit bus address is not supported!\n");
1673 RequirementDescriptor->
Flags = 0;
1693 RequirementDescriptor->
Flags = 0;
1698 switch (addr64_data->Info.Mem.Caching)
1708 RequirementDescriptor++;
1719 DPRINT1(
"64-bit bus address is not supported!\n");
1722 RequirementDescriptor->
Flags = 0;
1742 RequirementDescriptor->
Flags = 0;
1747 switch (addr64_data->Info.Mem.Caching)
1757 RequirementDescriptor++;
1771 RequirementDescriptor->
u.
Memory.MinimumAddress.QuadPart = mem24_data->
Minimum;
1775 RequirementDescriptor++;
1784 RequirementDescriptor->
Flags = 0;
1789 RequirementDescriptor->
u.
Memory.MinimumAddress.QuadPart = mem32_data->
Minimum;
1793 RequirementDescriptor++;
1802 RequirementDescriptor->
Flags = 0;
1807 RequirementDescriptor->
u.
Memory.MinimumAddress.QuadPart = fixedmem32_data->
Address;
1811 RequirementDescriptor++;
1874 switch (
stack->Parameters.QueryDeviceRelations.Type) {
1879 if (deviceRelations) {
1884 ASSERTMSG(
"Someone above is handling TargetDeviceRelation\n", !deviceRelations);
1890 if (!deviceRelations) {
1902 deviceRelations->
Count = 1;
1907 Irp->IoStatus.Information = (
ULONG_PTR) deviceRelations;
1952 if (busInfo ==
NULL) {
1956 busInfo->
BusTypeGuid = GUID_ACPI_INTERFACE_STANDARD;
2011 if (pnpIrp ==
NULL) {
2014 goto GetDeviceCapabilitiesExit;
2061GetDeviceCapabilitiesExit:
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
int strcmp(const char *String1, const char *String2)
char * strstr(char *String1, char *String2)
#define AE_BUFFER_OVERFLOW
#define ACPI_BUTTON_HID_LID
#define ACPI_PROCESSOR_HID
PCHAR DbgDeviceRelationString(DEVICE_RELATION_TYPE Type)
NTSTATUS Bus_PDO_QueryInterface(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
UNICODE_STRING ProcessorHardwareIds
LPWSTR ProcessorNameString
#define ACPI_RESOURCE_TYPE_MEMORY32
#define ACPI_CACHABLE_MEMORY
#define ACPI_NEXT_RESOURCE(Res)
#define ACPI_RESOURCE_TYPE_DMA
#define ACPI_RESOURCE_TYPE_MEMORY24
#define ACPI_READ_ONLY_MEMORY
#define ACPI_RESOURCE_TYPE_EXTENDED_IRQ
#define ACPI_RESOURCE_TYPE_IRQ
#define ACPI_RESOURCE_TYPE_FIXED_IO
#define ACPI_BUS_NUMBER_RANGE
#define ACPI_TRANSFER_8_16
#define ACPI_RESOURCE_TYPE_END_DEPENDENT
#define ACPI_RESOURCE_TYPE_END_TAG
#define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64
#define ACPI_RESOURCE_TYPE_START_DEPENDENT
#define ACPI_PREFETCHABLE_MEMORY
#define ACPI_RESOURCE_TYPE_ADDRESS64
#define ACPI_WRITE_COMBINING_MEMORY
#define ACPI_RESOURCE_TYPE_FIXED_MEMORY32
#define ACPI_RESOURCE_TYPE_ADDRESS32
#define ACPI_LEVEL_SENSITIVE
#define ACPI_RESOURCE_TYPE_IO
#define ACPI_RESOURCE_TYPE_ADDRESS16
#define ACPI_D_STATE_COUNT
NTSTATUS Bus_PDO_PnP(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpStack, PPDO_DEVICE_DATA DeviceData)
NTSTATUS Bus_PDO_QueryResources(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
NTSTATUS Bus_PDO_QueryDeviceRelations(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
NTSTATUS Bus_PDO_QueryDeviceText(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
NTSTATUS Bus_PDO_QueryDeviceId(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
NTSTATUS Bus_PDO_QueryResourceRequirements(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
NTSTATUS Bus_PDO_QueryDeviceCaps(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
NTSTATUS Bus_PDO_QueryBusInformation(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
NTSTATUS Bus_GetDeviceCapabilities(PDEVICE_OBJECT DeviceObject, PDEVICE_CAPABILITIES DeviceCapabilities)
#define STATUS_NOT_SUPPORTED
#define NT_SUCCESS(StatCode)
int acpi_bus_get_device(ACPI_HANDLE handle, struct acpi_device **device)
BOOLEAN acpi_bus_power_manageable(ACPI_HANDLE handle)
int acpi_bus_set_power(ACPI_HANDLE handle, int state)
ACPI_STATUS acpi_evaluate_integer(ACPI_HANDLE handle, ACPI_STRING pathname, ACPI_OBJECT_LIST *arguments, unsigned long long *data)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define SET_NEW_PNP_STATE(_Data_, _state_)
#define RESTORE_PREVIOUS_PNP_STATE(_Data_)
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
struct _CM_RESOURCE_LIST CM_RESOURCE_LIST
#define CmResourceTypeMemory
#define CmResourceTypeDma
#define CmResourceTypePort
#define CmResourceTypeBusNumber
#define CmResourceTypeInterrupt
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
#define ExFreePoolWithTag(_P, _T)
#define CM_RESOURCE_PORT_POSITIVE_DECODE
#define CM_RESOURCE_MEMORY_PREFETCHABLE
#define CM_RESOURCE_DMA_8_AND_16
#define CM_RESOURCE_DMA_BUS_MASTER
#define CM_RESOURCE_PORT_IO
#define CM_RESOURCE_DMA_8
#define CM_RESOURCE_DMA_TYPE_A
#define CM_RESOURCE_DMA_TYPE_F
#define CM_RESOURCE_MEMORY_READ_ONLY
#define CM_RESOURCE_PORT_16_BIT_DECODE
#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
#define CM_RESOURCE_MEMORY_COMBINEDWRITE
#define CM_RESOURCE_MEMORY_READ_WRITE
#define CM_RESOURCE_MEMORY_CACHEABLE
#define CM_RESOURCE_DMA_TYPE_B
#define CM_RESOURCE_DMA_16
#define CM_RESOURCE_MEMORY_24
#define CM_RESOURCE_INTERRUPT_LATCHED
#define CM_RESOURCE_PORT_10_BIT_DECODE
#define ASSERTMSG(msg, exp)
PDEVICE_OBJECT NTAPI IoGetAttachedDeviceReference(PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI IoRegisterDeviceInterface(IN PDEVICE_OBJECT PhysicalDeviceObject, IN CONST GUID *InterfaceClassGuid, IN PUNICODE_STRING ReferenceString OPTIONAL, OUT PUNICODE_STRING SymbolicLinkName)
NTSTATUS NTAPI IoSetDeviceInterfaceState(IN PUNICODE_STRING SymbolicLinkName, IN BOOLEAN Enable)
PIRP NTAPI IoBuildSynchronousFsdRequest(IN ULONG MajorFunction, IN PDEVICE_OBJECT DeviceObject, IN PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER StartingOffset, IN PKEVENT Event, IN PIO_STATUS_BLOCK IoStatusBlock)
#define IoCompleteRequest
POWER_STATE NTAPI PoSetPowerState(IN PDEVICE_OBJECT DeviceObject, IN POWER_STATE_TYPE Type, IN POWER_STATE State)
ACPI_STATUS AcpiGetCurrentResources(ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer)
ACPI_STATUS AcpiGetPossibleResources(ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@391::@399 BusNumber
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@391::@393 Port
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@391::@396 Memory
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@391 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@391::@394 Interrupt
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@391::@397 Dma
PDEVICE_OBJECT Objects[1]
struct _IO_RESOURCE_DESCRIPTOR::@2055::@2059 Dma
union _IO_RESOURCE_DESCRIPTOR::@2055 u
struct _IO_RESOURCE_DESCRIPTOR::@2055::@2058 Interrupt
struct _IO_RESOURCE_DESCRIPTOR::@2055::@2057 Memory
struct _IO_RESOURCE_DESCRIPTOR::@2055::@2056 Port
struct _IO_RESOURCE_DESCRIPTOR::@2055::@2062 BusNumber
union _IO_STACK_LOCATION::@1580 Parameters
struct _IO_STACK_LOCATION::@3979::@4004 QueryDeviceRelations
struct _IO_STACK_LOCATION::@3979::@4006 DeviceCapabilities
struct acpi_device_status status
ACPI_RESOURCE_ADDRESS_COMMON ACPI_ADDRESS16_ATTRIBUTE Address
ACPI_RESOURCE_ADDRESS_COMMON ACPI_ADDRESS32_ATTRIBUTE Address
ACPI_RESOURCE_ADDRESS_COMMON ACPI_ADDRESS64_ATTRIBUTE Address
ACPI_ADDRESS64_ATTRIBUTE Address
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
_In_ WDFIORESREQLIST RequirementsList
#define DeviceCapabilities
@ CmResourceShareDeviceExclusive
@ CmResourceShareDriverExclusive
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
#define IRP_MN_CANCEL_STOP_DEVICE
#define IRP_MN_QUERY_INTERFACE
#define IRP_MN_START_DEVICE
#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS
#define IO_RESOURCE_ALTERNATIVE
#define IRP_MN_REMOVE_DEVICE
#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS
struct _DEVICE_RELATIONS * PDEVICE_RELATIONS
#define IRP_MN_QUERY_DEVICE_RELATIONS
#define IO_RESOURCE_PREFERRED
#define IRP_MN_QUERY_STOP_DEVICE
#define IRP_MN_QUERY_DEVICE_TEXT
#define IRP_MN_QUERY_CAPABILITIES
#define IRP_MN_QUERY_RESOURCES
#define IRP_MN_CANCEL_REMOVE_DEVICE
#define IRP_MN_STOP_DEVICE
struct _IO_RESOURCE_REQUIREMENTS_LIST IO_RESOURCE_REQUIREMENTS_LIST
#define IRP_MN_QUERY_BUS_INFORMATION
#define IRP_MN_QUERY_REMOVE_DEVICE
#define ObDereferenceObject
#define ObReferenceObject