出于硬件测试的目的,我想枚举Win32(XP及更高版本)和用户空间中PCI / PCIe设备使用的I / O和内存区域(我已经知道如何在内核模式下执行此操作,但对于我更喜欢在用户模式下这样做的原因很多)。通过使用Configuration Manager API(http://msdn.microsoft.com/en-us/library/windows/hardware/ff549717%28v=vs.85%29.aspx),我已经可以找到所有设备的资源。我唯一遗漏的是PCI寄存器空间中每个资源所需的条目位置。实际上,资源管理器一般不会维护资源的顺序(为什么要这样做呢?)。此外,一些设备(例如RTL8168网络控制器)在BAR寄存器中具有“空洞”,即BAR 0和2对应于某些资源而BAR 1不对应。有没有办法通过某些PNP Configuration Manager API(或其他API)获取给定资源的原始BAR索引?