1304{
1305 ULONG NumberOfResources = 0;
1309 ULONG i, RequirementsListSize;
1314
1316
1318 {
1319 return Irp->IoStatus.Status;
1320 }
1321
1322
1325 {
1326 return Irp->IoStatus.Status;
1327 }
1328
1329
1331 {
1333 if (CurrentRes)
1335 else
1339 {
1340 if (!CurrentRes)
1342 else
1343 return Irp->IoStatus.Status;
1344 }
1345 else
1346 break;
1347 }
1348
1352
1353 if (CurrentRes)
1355 else
1358 {
1359 DPRINT1(
"AcpiGetCurrentResources #2 failed (0x%x)\n", AcpiStatus);
1362 }
1363
1364 SeenStartDependent =
FALSE;
1366
1368 {
1370 {
1371 if (SeenStartDependent)
1372 {
1373 break;
1374 }
1375 SeenStartDependent =
TRUE;
1376 }
1378 {
1380 {
1383 break;
1385 break;
1386 }
1388 {
1391 break;
1392 }
1394 {
1397 break;
1398 }
1403 {
1406 break;
1407 NumberOfResources++;
1408 break;
1409 }
1415 {
1416 NumberOfResources++;
1417 break;
1418 }
1419 default:
1420 {
1421 break;
1422 }
1423 }
1425 }
1426
1429
1431 {
1434 }
1444
1445
1446 SeenStartDependent =
FALSE;
1449 {
1451 {
1452 if (SeenStartDependent)
1453 {
1454 break;
1455 }
1456 SeenStartDependent =
TRUE;
1457 }
1459 {
1461 {
1464 break;
1466 {
1471 RequirementDescriptor->
u.
Interrupt.MinimumVector =
1473
1474 RequirementDescriptor++;
1475 }
1476 break;
1477 }
1479 {
1482 {
1487 RequirementDescriptor->
u.
Interrupt.MinimumVector =
1489
1490 RequirementDescriptor++;
1491 }
1492 break;
1493 }
1495 {
1498 {
1500 RequirementDescriptor->
Flags = 0;
1501 switch (dma_data->
Type)
1502 {
1506 }
1510 {
1514 }
1515
1518 RequirementDescriptor->
u.
Dma.MinimumChannel =
1519 RequirementDescriptor->
u.
Dma.MaximumChannel = dma_data->
Channels[
i];
1520 RequirementDescriptor++;
1521 }
1522 break;
1523 }
1525 {
1530 else
1537 RequirementDescriptor->
u.
Port.MinimumAddress.QuadPart = io_data->
Minimum;
1539
1540 RequirementDescriptor++;
1541 break;
1542 }
1544 {
1551 RequirementDescriptor->
u.
Port.Alignment = 1;
1552 RequirementDescriptor->
u.
Port.MinimumAddress.QuadPart = io_data->
Address;
1554
1555 RequirementDescriptor++;
1556 break;
1557 }
1559 {
1562 break;
1565 {
1568 RequirementDescriptor->
Flags = 0;
1572 }
1574 {
1583 }
1584 else
1585 {
1588 RequirementDescriptor->
Flags = 0;
1591 else
1593 switch (addr16_data->Info.Mem.Caching)
1594 {
1598 }
1602 }
1603 RequirementDescriptor++;
1604 break;
1605 }
1607 {
1610 break;
1613 {
1616 RequirementDescriptor->
Flags = 0;
1620 }
1622 {
1631 }
1632 else
1633 {
1636 RequirementDescriptor->
Flags = 0;
1639 else
1641 switch (addr32_data->Info.Mem.Caching)
1642 {
1646 }
1650 }
1651 RequirementDescriptor++;
1652 break;
1653 }
1655 {
1658 break;
1661 {
1662 DPRINT1(
"64-bit bus address is not supported!\n");
1665 RequirementDescriptor->
Flags = 0;
1669 }
1671 {
1680 }
1681 else
1682 {
1685 RequirementDescriptor->
Flags = 0;
1688 else
1690 switch (addr64_data->Info.Mem.Caching)
1691 {
1695 }
1699 }
1700 RequirementDescriptor++;
1701 break;
1702 }
1704 {
1707 break;
1710 {
1711 DPRINT1(
"64-bit bus address is not supported!\n");
1714 RequirementDescriptor->
Flags = 0;
1718 }
1720 {
1729 }
1730 else
1731 {
1734 RequirementDescriptor->
Flags = 0;
1737 else
1739 switch (addr64_data->Info.Mem.Caching)
1740 {
1744 }
1748 }
1749 RequirementDescriptor++;
1750 break;
1751 }
1753 {
1761 else
1763 RequirementDescriptor->
u.
Memory.MinimumAddress.QuadPart = mem24_data->
Minimum;
1766
1767 RequirementDescriptor++;
1768 break;
1769 }
1771 {
1776 RequirementDescriptor->
Flags = 0;
1779 else
1781 RequirementDescriptor->
u.
Memory.MinimumAddress.QuadPart = mem32_data->
Minimum;
1784
1785 RequirementDescriptor++;
1786 break;
1787 }
1789 {
1794 RequirementDescriptor->
Flags = 0;
1797 else
1799 RequirementDescriptor->
u.
Memory.MinimumAddress.QuadPart = fixedmem32_data->
Address;
1802
1803 RequirementDescriptor++;
1804 break;
1805 }
1806 default:
1807 {
1808 break;
1809 }
1810 }
1812 }
1814
1816
1818}
#define AE_BUFFER_OVERFLOW
#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 IO_RESOURCE_ALTERNATIVE
#define IO_RESOURCE_PREFERRED
struct _IO_RESOURCE_REQUIREMENTS_LIST IO_RESOURCE_REQUIREMENTS_LIST
#define CmResourceTypeMemory
#define CmResourceTypeDma
#define CmResourceTypePort
#define CmResourceTypeBusNumber
#define CmResourceTypeInterrupt
#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
ACPI_STATUS AcpiGetCurrentResources(ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer)
ACPI_STATUS AcpiGetPossibleResources(ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer)
struct _IO_RESOURCE_DESCRIPTOR::@21::@28 BusNumber
union _IO_RESOURCE_DESCRIPTOR::@21 u
struct _IO_RESOURCE_DESCRIPTOR::@21::@25 Dma
struct _IO_RESOURCE_DESCRIPTOR::@21::@22 Port
struct _IO_RESOURCE_DESCRIPTOR::@21::@24 Interrupt
struct _IO_RESOURCE_DESCRIPTOR::@21::@23 Memory
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
_In_ WDFIORESREQLIST RequirementsList
@ CmResourceShareDeviceExclusive
@ CmResourceShareDriverExclusive