PCI Driver
The PCI Enumerating Driver provides facilities for enumerating PCI buses and the resources used by devices on those buses. It attaches to devices based on the HIDs “PNP0A08” and “PNP0A03” (PCIe and PCI root complexes, respectively) and the CID “PCI\CC_0604” (PCI-to-PCI Bridge).
When it attaches to a complex or bridge it attempts to enumerate all direct children of the complex/bridge and creates a device for each child function.
For each located function, the driver first attempts to locate an existing device object from the existing children of the complex/bridge based on matching address. If no such device is found, it creates a device object and attempts to use ACPI Driver Private Dispatch to allow ACPI enumeration of sub-devices to proceed. NOTE: the pci driver will proceed with enumeration regardless if the private dispatch succeeds.
For each enumerated function, pci BARs are enumerated and passed to resource configuration by the IO manager.
When the PCI Enumerating Driver receives a set-resources IRP from the IO Manager it sets the BARs of the device to match the chosen resources (Not yet implemented).