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 &&
91 &GUID_DEVICE_PROCESSOR,
226 IrpStack->
Parameters.QueryDeviceRelations.Type));
339 deviceCapabilities=
stack->Parameters.DeviceCapabilities.Capabilities;
345 if (deviceCapabilities->Version != 1 ||
351 deviceCapabilities->D1Latency = 0;
352 deviceCapabilities->D2Latency = 0;
353 deviceCapabilities->D3Latency = 0;
362 if (!
device->power.states[
i].flags.valid)
373 deviceCapabilities->D1Latency =
device->power.states[
i].latency;
378 deviceCapabilities->D2Latency =
device->power.states[
i].latency;
383 deviceCapabilities->D3Latency =
device->power.states[
i].latency;
392 deviceCapabilities->DeviceD1 =
394 deviceCapabilities->DeviceD2 =
397 deviceCapabilities->WakeFromD0 =
FALSE;
398 deviceCapabilities->WakeFromD1 =
TRUE;
399 deviceCapabilities->WakeFromD2 =
FALSE;
400 deviceCapabilities->WakeFromD3 =
FALSE;
404 deviceCapabilities->LockSupported =
device->flags.lockable;
405 deviceCapabilities->EjectSupported =
device->flags.ejectable;
406 deviceCapabilities->HardwareDisabled = !
device->status.enabled && !
device->status.functional;
408 deviceCapabilities->SurpriseRemovalOK =
device->flags.surprise_removal_ok;
409 deviceCapabilities->UniqueID =
device->flags.unique_id;
410 deviceCapabilities->NoDisplayInUI = !
device->status.show_in_ui;
411 deviceCapabilities->Address =
device->pnp.bus_address;
415 (
device->flags.hardware_id &&
422 deviceCapabilities->RawDeviceOK =
TRUE;
425 deviceCapabilities->SilentInstall =
FALSE;
426 deviceCapabilities->UINumber = (
ULONG)-1;
448 switch (
stack->Parameters.QueryId.IdType) {
477 L"ACPI\\FixedButton");
505 if (
Device->flags.unique_id)
545 if (!
Device->flags.hardware_id)
577 L"ACPI\\FixedButton");
613 if (!
Device->flags.hardware_id)
635 else if (
Device->flags.compatible_ids)
637 for (
i = 0;
i <
Device->pnp.cid_list->Count;
i++)
641 Device->pnp.cid_list->Ids[
i].String);
646 Device->pnp.cid_list->Ids[
i].String);
692 switch (
stack->Parameters.QueryDeviceText.DeviceTextType) {
696 if (!
Irp->IoStatus.Information) {
698 Temp =
L"Programmable interrupt controller";
700 Temp =
L"System timer";
702 Temp =
L"DMA controller";
706 Temp =
L"Parallel port";
708 Temp =
L"Serial port";
710 Temp =
L"Disk controller";
712 Temp =
L"Disk controller";
714 Temp =
L"Display adapter";
716 Temp =
L"Bus controller";
718 Temp =
L"PCMCIA controller";
720 Temp =
L"Mouse device";
722 Temp =
L"Network adapter";
724 Temp =
L"SCSI controller";
726 Temp =
L"Multimedia device";
730 Temp =
L"Power Button";
732 Temp =
L"Sleep Button";
734 Temp =
L"Lid Switch";
736 Temp =
L"ACPI Embedded Controller";
741 Temp =
L"PCI Root Bridge";
743 Temp =
L"ACPI Battery";
745 Temp =
L"PCI Interrupt Link";
747 Temp =
L"ACPI Power Resource";
756 Temp =
L"ACPI Thermal Zone";
758 Temp =
L"Smart Battery";
760 Temp =
L"AC Adapter";
765 Temp =
L"ACPI Fixed Feature Button";
767 Temp =
L"Other ACPI device";
798 ULONG NumberOfResources = 0;
804 ULONG ResourceListSize;
811 return Irp->IoStatus.Status;
823 if (AcpiStatus !=
AE_OK)
826 if (
device->flags.unique_id)
834 DPRINT1(
"Failed to find a bus number\n");
839 DPRINT(
"Using _BBN for bus number\n");
855 ResourceDescriptor =
ResourceList->List[0].PartialResourceList.PartialDescriptors;
872 return Irp->IoStatus.Status;
882 DPRINT1(
"AcpiGetCurrentResources #2 failed (0x%x)\n", AcpiStatus);
956 ResourceList->List[0].PartialResourceList.Count = NumberOfResources;
957 ResourceDescriptor =
ResourceList->List[0].PartialResourceList.PartialDescriptors;
976 ResourceDescriptor->
Flags =
982 ResourceDescriptor++;
995 ResourceDescriptor->
Flags =
1001 ResourceDescriptor++;
1011 ResourceDescriptor->
Flags = 0;
1012 switch (dma_data->
Type)
1028 ResourceDescriptor++;
1042 ResourceDescriptor->
u.
Port.Start.QuadPart = io_data->
Minimum;
1045 ResourceDescriptor++;
1054 ResourceDescriptor->
u.
Port.Start.QuadPart = io_data->
Address;
1057 ResourceDescriptor++;
1069 ResourceDescriptor->
Flags = 0;
1087 ResourceDescriptor->
Flags = 0;
1092 switch (addr16_data->Info.Mem.Caching)
1101 ResourceDescriptor++;
1113 ResourceDescriptor->
Flags = 0;
1131 ResourceDescriptor->
Flags = 0;
1136 switch (addr32_data->Info.Mem.Caching)
1145 ResourceDescriptor++;
1155 DPRINT1(
"64-bit bus address is not supported!\n");
1158 ResourceDescriptor->
Flags = 0;
1176 ResourceDescriptor->
Flags = 0;
1181 switch (addr64_data->Info.Mem.Caching)
1190 ResourceDescriptor++;
1200 DPRINT1(
"64-bit bus address is not supported!\n");
1203 ResourceDescriptor->
Flags = 0;
1221 ResourceDescriptor->
Flags = 0;
1226 switch (addr64_data->Info.Mem.Caching)
1235 ResourceDescriptor++;
1248 ResourceDescriptor->
u.
Memory.Start.QuadPart = mem24_data->
Minimum;
1251 ResourceDescriptor++;
1259 ResourceDescriptor->
Flags = 0;
1264 ResourceDescriptor->
u.
Memory.Start.QuadPart = mem32_data->
Minimum;
1267 ResourceDescriptor++;
1275 ResourceDescriptor->
Flags = 0;
1280 ResourceDescriptor->
u.
Memory.Start.QuadPart = memfixed32_data->
Address;
1283 ResourceDescriptor++;
1305 ULONG NumberOfResources = 0;
1309 ULONG i, RequirementsListSize;
1319 return Irp->IoStatus.Status;
1326 return Irp->IoStatus.Status;
1343 return Irp->IoStatus.Status;
1359 DPRINT1(
"AcpiGetCurrentResources #2 failed (0x%x)\n", AcpiStatus);
1364 SeenStartDependent =
FALSE;
1371 if (SeenStartDependent)
1375 SeenStartDependent =
TRUE;
1407 NumberOfResources++;
1416 NumberOfResources++;
1446 SeenStartDependent =
FALSE;
1452 if (SeenStartDependent)
1456 SeenStartDependent =
TRUE;
1471 RequirementDescriptor->
u.
Interrupt.MinimumVector =
1474 RequirementDescriptor++;
1487 RequirementDescriptor->
u.
Interrupt.MinimumVector =
1490 RequirementDescriptor++;
1500 RequirementDescriptor->
Flags = 0;
1501 switch (dma_data->
Type)
1518 RequirementDescriptor->
u.
Dma.MinimumChannel =
1519 RequirementDescriptor->
u.
Dma.MaximumChannel = dma_data->
Channels[
i];
1520 RequirementDescriptor++;
1537 RequirementDescriptor->
u.
Port.MinimumAddress.QuadPart = io_data->
Minimum;
1540 RequirementDescriptor++;
1551 RequirementDescriptor->
u.
Port.Alignment = 1;
1552 RequirementDescriptor->
u.
Port.MinimumAddress.QuadPart = io_data->
Address;
1555 RequirementDescriptor++;
1568 RequirementDescriptor->
Flags = 0;
1588 RequirementDescriptor->
Flags = 0;
1593 switch (addr16_data->Info.Mem.Caching)
1603 RequirementDescriptor++;
1616 RequirementDescriptor->
Flags = 0;
1636 RequirementDescriptor->
Flags = 0;
1641 switch (addr32_data->Info.Mem.Caching)
1651 RequirementDescriptor++;
1662 DPRINT1(
"64-bit bus address is not supported!\n");
1665 RequirementDescriptor->
Flags = 0;
1685 RequirementDescriptor->
Flags = 0;
1690 switch (addr64_data->Info.Mem.Caching)
1700 RequirementDescriptor++;
1711 DPRINT1(
"64-bit bus address is not supported!\n");
1714 RequirementDescriptor->
Flags = 0;
1734 RequirementDescriptor->
Flags = 0;
1739 switch (addr64_data->Info.Mem.Caching)
1749 RequirementDescriptor++;
1763 RequirementDescriptor->
u.
Memory.MinimumAddress.QuadPart = mem24_data->
Minimum;
1767 RequirementDescriptor++;
1776 RequirementDescriptor->
Flags = 0;
1781 RequirementDescriptor->
u.
Memory.MinimumAddress.QuadPart = mem32_data->
Minimum;
1785 RequirementDescriptor++;
1794 RequirementDescriptor->
Flags = 0;
1799 RequirementDescriptor->
u.
Memory.MinimumAddress.QuadPart = fixedmem32_data->
Address;
1803 RequirementDescriptor++;
1866 switch (
stack->Parameters.QueryDeviceRelations.Type) {
1871 if (deviceRelations) {
1876 ASSERTMSG(
"Someone above is handling TargetDeviceRelation\n", !deviceRelations);
1882 if (!deviceRelations) {
1894 deviceRelations->
Count = 1;
1899 Irp->IoStatus.Information = (
ULONG_PTR) deviceRelations;
1944 if (busInfo ==
NULL) {
1948 busInfo->
BusTypeGuid = GUID_ACPI_INTERFACE_STANDARD;
2003 if (pnpIrp ==
NULL) {
2006 goto GetDeviceCapabilitiesExit;
2053 GetDeviceCapabilitiesExit:
#define CM_RESOURCE_DMA_16
struct _IO_RESOURCE_REQUIREMENTS_LIST IO_RESOURCE_REQUIREMENTS_LIST
#define IRP_MN_CANCEL_REMOVE_DEVICE
#define ACPI_WRITE_COMBINING_MEMORY
return STATUS_NOT_SUPPORTED
#define CM_RESOURCE_MEMORY_PREFETCHABLE
#define IRP_MN_QUERY_RESOURCES
#define IRP_MN_REMOVE_DEVICE
#define STATUS_INSUFFICIENT_RESOURCES
#define ACPI_RESOURCE_TYPE_START_DEPENDENT
int acpi_bus_get_device(ACPI_HANDLE handle, struct acpi_device **device)
#define IO_RESOURCE_PREFERRED
NTSTATUS Bus_PDO_QueryResources(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
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)
IN BOOLEAN OUT PSTR Buffer
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@375::@380 Memory
#define ACPI_RESOURCE_TYPE_END_DEPENDENT
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
ACPI_STATUS acpi_evaluate_integer(ACPI_HANDLE handle, ACPI_STRING pathname, ACPI_OBJECT_LIST *arguments, unsigned long long *data)
#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS
char * strstr(char *String1, char *String2)
#define ACPI_TRANSFER_8_16
#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS
PDEVICE_OBJECT Objects[1]
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1576 BusNumber
#define ACPI_RESOURCE_TYPE_IRQ
NTSTATUS Bus_PDO_PnP(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpStack, PPDO_DEVICE_DATA DeviceData)
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@375::@383 BusNumber
#define ACPI_RESOURCE_TYPE_END_TAG
#define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64
BOOLEAN acpi_bus_power_manageable(ACPI_HANDLE handle)
static stack_node_t * stack
#define ACPI_READ_ONLY_MEMORY
#define CM_RESOURCE_DMA_TYPE_F
NTSTATUS Bus_PDO_QueryResourceRequirements(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1571 Memory
#define CM_RESOURCE_DMA_TYPE_A
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
#define CM_RESOURCE_MEMORY_READ_WRITE
#define CmResourceTypePort
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@375::@381 Dma
#define ACPI_BUS_NUMBER_RANGE
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@375::@378 Interrupt
#define ACPI_RESOURCE_TYPE_IO
_In_ PDEVICE_OBJECT DeviceObject
#define ACPI_PROCESSOR_HID
#define AE_BUFFER_OVERFLOW
#define CM_RESOURCE_MEMORY_24
#define IRP_MN_QUERY_REMOVE_DEVICE
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@375 u
#define ASSERTMSG(msg, exp)
GLenum GLuint GLenum GLsizei length
#define CM_RESOURCE_MEMORY_READ_ONLY
struct _DEVICE_RELATIONS * PDEVICE_RELATIONS
#define CM_RESOURCE_DMA_8_AND_16
#define CM_RESOURCE_PORT_16_BIT_DECODE
#define IoCompleteRequest
#define DeviceCapabilities
#define ACPI_PREFETCHABLE_MEMORY
NTSTATUS NTAPI IoSetDeviceInterfaceState(IN PUNICODE_STRING SymbolicLinkName, IN BOOLEAN Enable)
#define CM_RESOURCE_PORT_10_BIT_DECODE
PDEVICE_OBJECT NTAPI IoGetAttachedDeviceReference(PDEVICE_OBJECT DeviceObject)
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
#define ACPI_D_STATE_COUNT
#define IRP_MN_QUERY_STOP_DEVICE
#define ACPI_RESOURCE_TYPE_ADDRESS32
#define IRP_MN_STOP_DEVICE
#define NT_SUCCESS(StatCode)
#define RESTORE_PREVIOUS_PNP_STATE(_Data_)
NTSTATUS Bus_PDO_QueryDeviceId(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
#define CM_RESOURCE_PORT_POSITIVE_DECODE
NTSTATUS Bus_PDO_QueryDeviceRelations(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
#define IRP_MN_START_DEVICE
#define ObDereferenceObject
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@375::@377 Port
ACPI_STATUS AcpiGetPossibleResources(ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer)
NTSTATUS Bus_PDO_QueryDeviceText(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
#define ACPI_BUTTON_HID_LID
#define IRP_MN_QUERY_DEVICE_TEXT
#define IRP_MN_QUERY_INTERFACE
#define CM_RESOURCE_MEMORY_COMBINEDWRITE
union _IO_RESOURCE_DESCRIPTOR::@1569 u
#define IO_RESOURCE_ALTERNATIVE
#define ACPI_RESOURCE_TYPE_ADDRESS64
#define STATUS_UNSUCCESSFUL
#define CM_RESOURCE_DMA_TYPE_B
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IRP_MN_QUERY_BUS_INFORMATION
NTSTATUS Bus_PDO_QueryBusInformation(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
LPWSTR ProcessorNameString
#define CM_RESOURCE_DMA_8
#define ACPI_RESOURCE_TYPE_EXTENDED_IRQ
#define ACPI_RESOURCE_TYPE_FIXED_MEMORY32
_Must_inspect_result_ _In_ WDFDEVICE Device
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1572 Interrupt
struct _CM_RESOURCE_LIST CM_RESOURCE_LIST
#define ACPI_RESOURCE_TYPE_MEMORY32
#define CM_RESOURCE_MEMORY_CACHEABLE
ACPI_ADDRESS64_ATTRIBUTE Address
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
int acpi_bus_set_power(ACPI_HANDLE handle, int state)
NTSTATUS NTAPI IoRegisterDeviceInterface(IN PDEVICE_OBJECT PhysicalDeviceObject, IN CONST GUID *InterfaceClassGuid, IN PUNICODE_STRING ReferenceString OPTIONAL, OUT PUNICODE_STRING SymbolicLinkName)
#define KeInitializeEvent(pEvt, foo, foo2)
#define ACPI_NEXT_RESOURCE(Res)
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
ACPI_RESOURCE_ADDRESS_COMMON ACPI_ADDRESS64_ATTRIBUTE Address
#define CM_RESOURCE_PORT_IO
#define ACPI_RESOURCE_TYPE_DMA
NTSTATUS Bus_GetDeviceCapabilities(PDEVICE_OBJECT DeviceObject, PDEVICE_CAPABILITIES DeviceCapabilities)
UNICODE_STRING ProcessorHardwareIds
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1570 Port
NTSTATUS NTAPI IoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define IRP_MN_QUERY_DEVICE_RELATIONS
#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
#define CmResourceTypeInterrupt
_In_ WDFIORESREQLIST RequirementsList
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1573 Dma
#define ACPI_RESOURCE_TYPE_ADDRESS16
#define ACPI_RESOURCE_TYPE_MEMORY24
#define SET_NEW_PNP_STATE(_Data_, _state_)
#define ObReferenceObject
#define CM_RESOURCE_INTERRUPT_LATCHED
int strcmp(const char *String1, const char *String2)
#define RtlZeroMemory(Destination, Length)
POWER_STATE NTAPI PoSetPowerState(IN PDEVICE_OBJECT DeviceObject, IN POWER_STATE_TYPE Type, IN POWER_STATE State)
ACPI_RESOURCE_ADDRESS_COMMON ACPI_ADDRESS16_ATTRIBUTE Address
#define RtlCopyMemory(Destination, Source, Length)
NTSTATUS Bus_PDO_QueryInterface(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
#define CmResourceTypeBusNumber
#define IRP_MN_CANCEL_STOP_DEVICE
ACPI_RESOURCE_ADDRESS_COMMON ACPI_ADDRESS32_ATTRIBUTE Address
#define ExFreePoolWithTag(_P, _T)
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
#define CmResourceTypeMemory
#define ACPI_RESOURCE_TYPE_FIXED_IO
ACPI_STATUS AcpiGetCurrentResources(ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer)
static SERVICE_STATUS status
#define ACPI_LEVEL_SENSITIVE
#define CM_RESOURCE_DMA_BUS_MASTER
#define ACPI_CACHABLE_MEMORY
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
NTSTATUS Bus_PDO_QueryDeviceCaps(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
PCHAR DbgDeviceRelationString(DEVICE_RELATION_TYPE Type)
#define CmResourceTypeDma
#define IRP_MN_QUERY_CAPABILITIES