windowswinapidriverspcipci-bus

Accessing the PCI config space with Win32 API


Given the address of a PCI device (i.e. bus, device, function), how can one programatically read, using Win32 API calls in userspace, the config space (e.g. vendor ID, device ID) for that device?

On Linux, one openes the /sys/bus/pci/devices//config file and reads from the right offset.


Solution

  • You can use the SetupDiGetClassDevs API to traverse a list of devices. If you pass PCI in the Enumerator parameter, you can enumerate only PCI devices.