From: Maxim S. Shatskih on
> If this is the case, how can bus adapter or controller enumerate
> devices that are currently present on its bus, apart from submitting a
> request to PCI and providing bus number with it ???

PCI.SYS (maybe with some help of ACPI and HAL - I have heard that 0xcf8/0xcfc
are now legacy, and call to some ACPI method is not) is the only agent who
touches PCI config space.

Any more high-level PCI slot info in the OS is got from PCI.SYS - using
IRP_MN_QUERY_DEVICE_RELATIONS or such.

BAR settings are decided in arbiter code in PnP proper (possibly with help from
custom arbiters like MF.SYS) - and the decision is delivered down to the
hardware in MN_START_DEVICE to the devnode with PCI.SYS's PDO at bottom.

--
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
maxim(a)storagecraft.com
http://www.storagecraft.com

From: Maxim S. Shatskih on
> this data they can use the various user space SetupAPI, but touching the
> CF8/CFC ports will cause crashes.

Maybe using obsolete HalGetBusData - which is an API for 0xcf8/0xcfc - is an
idea.

I'm afraid, though, that calls to this function will disable power management
on the machine - since this is how the OS detect the "legacy hardware driver"
for power management disable.

I'm not sure, though, whether HalGetBusData is enough, or
HalAssignSlotResources is needed for this.

--
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
maxim(a)storagecraft.com
http://www.storagecraft.com

First  |  Prev  | 
Pages: 1 2
Prev: snetcfg hang.
Next: already has a body