10 #define WIN32_NO_STATUS 16 #define IO_RESOURCE_PREFERRED 0x01 17 #define IO_RESOURCE_DEFAULT 0x02 18 #define IO_RESOURCE_ALTERNATIVE 0x08 90 #define DPRINT1(...) do { if (0) DbgPrint(__VA_ARGS__); } while (0) 178 #include "../../../../drivers/bus/acpi/buspdo.c" 181 #define MAKE_IRQ(Resource, _DescriptorLength, _Triggering, _Polarity, _Shareable, _WakeCapable) \ 183 Resource->Data.Irq.DescriptorLength = _DescriptorLength; \ 184 Resource->Data.Irq.Triggering = _Triggering; \ 185 Resource->Data.Irq.Polarity = _Polarity; \ 186 Resource->Data.Irq.Shareable = _Shareable; \ 187 Resource->Data.Irq.WakeCapable = _WakeCapable; \ 191 #define expect_irq(Desc, ExpectedOption, ExpectedShare, ExpectedMin, ExpectedMax) \ 193 ok((Desc)->Option == ExpectedOption, "Desc->Option = %u\n", (Desc)->Option); \ 194 ok((Desc)->Type == CmResourceTypeInterrupt, "Desc->Type = %u\n", (Desc)->Type); \ 195 ok((Desc)->ShareDisposition == ExpectedShare, "Desc->ShareDisposition = %u\n", (Desc)->ShareDisposition); \ 196 ok((Desc)->u.Interrupt.MinimumVector == ExpectedMin, "Desc->u.Interrupt.MinimumVector = %lu\n", (Desc)->u.Interrupt.MinimumVector); \ 197 ok((Desc)->u.Interrupt.MaximumVector == ExpectedMax, "Desc->u.Interrupt.MaximumVector = %lu\n", (Desc)->u.Interrupt.MaximumVector); \ 200 #define expect_port(Desc, ExpectedOption, ExpectedShare, ExpectedLength, ExpectedAlign, ExpectedMin, ExpectedMax) \ 202 ok((Desc)->Option == ExpectedOption, "Desc->Option = %u\n", (Desc)->Option); \ 203 ok((Desc)->Type == CmResourceTypePort, "Desc->Type = %u\n", (Desc)->Type); \ 204 ok((Desc)->ShareDisposition == ExpectedShare, "Desc->ShareDisposition = %u\n", (Desc)->ShareDisposition); \ 205 ok((Desc)->u.Port.Length == ExpectedLength, "Desc->u.Port.Length = %lu\n", (Desc)->u.Port.Length); \ 206 ok((Desc)->u.Port.Alignment == ExpectedAlign, "Desc->u.Port.Alignment = %lu\n", (Desc)->u.Port.Alignment); \ 207 ok((Desc)->u.Port.MinimumAddress.QuadPart == ExpectedMin, "Desc->u.Port.MinimumAddress = 0x%I64x\n", (Desc)->u.Port.MinimumAddress.QuadPart); \ 208 ok((Desc)->u.Port.MaximumAddress.QuadPart == ExpectedMax, "Desc->u.Port.MaximumAddress = 0x%I64x\n", (Desc)->u.Port.MaximumAddress.QuadPart); \ 255 Irp.IoStatus.Information = 0;
260 Resource->Length =
sizeof(*Resource);
262 Resource->Data.Irq.InterruptCount = 1;
263 Resource->Data.Irq.Interrupts[0] = 7;
273 ReqList = (
PVOID)
Irp.IoStatus.Information;
274 ok(ReqList !=
NULL,
"ReqList is NULL\n");
277 skip(
"No ReqList\n");
295 Irp.IoStatus.Information = 0;
302 Resource->Data.Irq.InterruptCount = 2;
303 Resource->Data.Irq.Interrupts[0] = 3;
304 Resource->Data.Irq.Interrupts[1] = 7;
314 ReqList = (
PVOID)
Irp.IoStatus.Information;
315 ok(ReqList !=
NULL,
"ReqList is NULL\n");
318 skip(
"No ReqList\n");
321 ok(ReqList->InterfaceType ==
Internal,
"InterfaceType = %u\n", ReqList->InterfaceType);
322 ok(ReqList->BusNumber == 0,
"BusNumber = %lu\n", ReqList->BusNumber);
323 ok(ReqList->SlotNumber == 0,
"SlotNumber = %lu\n", ReqList->SlotNumber);
324 ok(ReqList->AlternativeLists == 1,
"AlternativeLists = %lu\n", ReqList->AlternativeLists);
325 ok(ReqList->List[0].Version == 1,
"List[0].Version = %u\n", ReqList->List[0].Version);
326 ok(ReqList->List[0].Revision == 1,
"List[0].Revision = %u\n", ReqList->List[0].Revision);
327 ok(ReqList->List[0].Count == 2,
"List[0].Count = %lu\n", ReqList->List[0].Count);
337 Irp.IoStatus.Information = 0;
342 Resource->Length =
sizeof(*Resource);
345 Resource->Data.Io.AddressLength = 8;
357 ReqList = (
PVOID)
Irp.IoStatus.Information;
358 ok(ReqList !=
NULL,
"ReqList is NULL\n");
361 skip(
"No ReqList\n");
364 ok(ReqList->InterfaceType ==
Internal,
"InterfaceType = %u\n", ReqList->InterfaceType);
365 ok(ReqList->BusNumber == 0,
"BusNumber = %lu\n", ReqList->BusNumber);
366 ok(ReqList->SlotNumber == 0,
"SlotNumber = %lu\n", ReqList->SlotNumber);
367 ok(ReqList->AlternativeLists == 1,
"AlternativeLists = %lu\n", ReqList->AlternativeLists);
368 ok(ReqList->List[0].Version == 1,
"List[0].Version = %u\n", ReqList->List[0].Version);
369 ok(ReqList->List[0].Revision == 1,
"List[0].Revision = %u\n", ReqList->List[0].Revision);
370 ok(ReqList->List[0].Count == 1,
"List[0].Count = %lu\n", ReqList->List[0].Count);
379 Irp.IoStatus.Information = 0;
384 Resource->Length =
sizeof(*Resource);
387 Resource->Data.Io.AddressLength = 8;
394 Resource->Data.Irq.InterruptCount = 2;
395 Resource->Data.Irq.Interrupts[0] = 3;
396 Resource->Data.Irq.Interrupts[1] = 7;
406 ReqList = (
PVOID)
Irp.IoStatus.Information;
407 ok(ReqList !=
NULL,
"ReqList is NULL\n");
410 skip(
"No ReqList\n");
413 ok(ReqList->InterfaceType ==
Internal,
"InterfaceType = %u\n", ReqList->InterfaceType);
414 ok(ReqList->BusNumber == 0,
"BusNumber = %lu\n", ReqList->BusNumber);
415 ok(ReqList->SlotNumber == 0,
"SlotNumber = %lu\n", ReqList->SlotNumber);
416 ok(ReqList->AlternativeLists == 1,
"AlternativeLists = %lu\n", ReqList->AlternativeLists);
417 ok(ReqList->List[0].Version == 1,
"List[0].Version = %u\n", ReqList->List[0].Version);
418 ok(ReqList->List[0].Revision == 1,
"List[0].Revision = %u\n", ReqList->List[0].Revision);
419 ok(ReqList->List[0].Count == 3,
"List[0].Count = %lu\n", ReqList->List[0].Count);
430 Irp.IoStatus.Information = 0;
435 Resource->Length =
sizeof(*Resource);
439 Resource->Length =
sizeof(*Resource);
442 Resource->Data.Io.AddressLength = 8;
450 Resource->Data.Irq.InterruptCount = 5;
451 Resource->Data.Irq.Interrupts[0] = 3;
452 Resource->Data.Irq.Interrupts[1] = 4;
453 Resource->Data.Irq.Interrupts[2] = 5;
454 Resource->Data.Irq.Interrupts[3] = 6;
455 Resource->Data.Irq.Interrupts[4] = 7;
459 Resource->Length =
sizeof(*Resource);
463 Resource->Length =
sizeof(*Resource);
466 Resource->Data.Io.AddressLength = 8;
474 Resource->Data.Irq.InterruptCount = 5;
475 Resource->Data.Irq.Interrupts[0] = 3;
476 Resource->Data.Irq.Interrupts[1] = 4;
477 Resource->Data.Irq.Interrupts[2] = 5;
478 Resource->Data.Irq.Interrupts[3] = 6;
479 Resource->Data.Irq.Interrupts[4] = 7;
483 Resource->Length =
sizeof(*Resource);
494 ReqList = (
PVOID)
Irp.IoStatus.Information;
495 ok(ReqList !=
NULL,
"ReqList is NULL\n");
498 skip(
"No ReqList\n");
501 ok(ReqList->InterfaceType ==
Internal,
"InterfaceType = %u\n", ReqList->InterfaceType);
502 ok(ReqList->BusNumber == 0,
"BusNumber = %lu\n", ReqList->BusNumber);
503 ok(ReqList->SlotNumber == 0,
"SlotNumber = %lu\n", ReqList->SlotNumber);
504 ok(ReqList->AlternativeLists == 2,
"AlternativeLists = %lu\n", ReqList->AlternativeLists);
505 ok(ReqList->List[0].Version == 1,
"List[0].Version = %u\n", ReqList->List[0].Version);
506 ok(ReqList->List[0].Revision == 1,
"List[0].Revision = %u\n", ReqList->List[0].Revision);
507 ok(ReqList->List[0].Count == 6,
"List[0].Count = %lu\n", ReqList->List[0].Count);
517 ok(ReqList2->
Version == 1,
"List[1].Version = %u\n", ReqList->List[0].Version);
518 ok(ReqList2->
Revision == 1,
"List[1].Revision = %u\n", ReqList->List[0].Revision);
519 ok(ReqList2->
Count == 6,
"List[1].Count = %lu\n", ReqList->List[0].Count);
static ACPI_BUFFER CurrentBuffer
struct _IO_RESOURCE_REQUIREMENTS_LIST IO_RESOURCE_REQUIREMENTS_LIST
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1575 DevicePrivate
struct _IO_RESOURCE_LIST * PIO_RESOURCE_LIST
enum _INTERFACE_TYPE INTERFACE_TYPE
#define ACPI_RESOURCE_TYPE_START_DEPENDENT
#define IO_RESOURCE_PREFERRED
struct _PDO_DEVICE_DATA * PPDO_DEVICE_DATA
#define ACPI_RESOURCE_TYPE_END_DEPENDENT
#define expect_irq(Desc, ExpectedOption, ExpectedShare, ExpectedMin, ExpectedMax)
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1576 BusNumber
struct _IO_RESOURCE_LIST IO_RESOURCE_LIST
#define ACPI_RESOURCE_TYPE_IRQ
#define ACPI_RESOURCE_TYPE_END_TAG
struct _IO_RESOURCE_REQUIREMENTS_LIST * PIO_RESOURCE_REQUIREMENTS_LIST
static SIZE_T GetPoolAllocSize(PVOID MemPtr)
NTSTATUS Bus_PDO_QueryResourceRequirements(PPDO_DEVICE_DATA DeviceData, PIRP Irp)
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1571 Memory
static BOOLEAN AcpiCallExpected
#define ACPI_NOT_WAKE_CAPABLE
#define ACPI_RESOURCE_TYPE_IO
#define AE_BUFFER_OVERFLOW
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
INTERFACE_TYPE InterfaceType
#define ok_int(expression, result)
struct _PDO_DEVICE_DATA PDO_DEVICE_DATA
_Reserved_ PVOID Reserved
struct _IO_RESOURCE_DESCRIPTOR IO_RESOURCE_DESCRIPTOR
START_TEST(Bus_PDO_QueryResourceRequirements)
static VOID ExFreePoolWithTag(PVOID MemPtr, ULONG Tag)
IO_RESOURCE_DESCRIPTOR Descriptors[1]
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1574 Generic
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
ACPI_STATUS AcpiGetCurrentResources(ACPI_HANDLE Device, ACPI_BUFFER *RetBuffer)
static PVOID ExAllocatePoolWithTag(ULONG PoolType, SIZE_T NumberOfBytes, ULONG Tag)
static ACPI_BUFFER PossibleBuffer
union _IO_RESOURCE_DESCRIPTOR::@1569 u
#define IO_RESOURCE_ALTERNATIVE
struct _IO_RESOURCE_DESCRIPTOR * PIO_RESOURCE_DESCRIPTOR
_Must_inspect_result_ _In_ WDFCMRESLIST List
_Must_inspect_result_ _In_ WDFDEVICE Device
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1572 Interrupt
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
PHYSICAL_ADDRESS MaximumAddress
#define ACPI_NEXT_RESOURCE(Res)
#define FIELD_OFFSET(t, f)
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1570 Port
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1573 Dma
static ACPI_HANDLE CorrectHandle
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
ACPI_STATUS AcpiGetPossibleResources(ACPI_HANDLE Device, ACPI_BUFFER *RetBuffer)
PHYSICAL_ADDRESS MinimumAddress
#define ACPI_LEVEL_SENSITIVE
#define HeapFree(x, y, z)
struct _IO_RESOURCE_DESCRIPTOR::@1569::@1577 ConfigData
#define expect_port(Desc, ExpectedOption, ExpectedShare, ExpectedLength, ExpectedAlign, ExpectedMin, ExpectedMax)
#define MAKE_IRQ(Resource, _DescriptorLength, _Triggering, _Polarity, _Shareable, _WakeCapable)