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.
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.