Re: 关于PCI配置空间的存取

Windows内核调试

关于PCI配置空间的存取


yushang 2009-08-17, 22:28 下午
我知道Windows下读取PCI配置空间可以使用IRP_MN_QUERY_INTERFACE向PCI总线查询一个接口,这个接口中提供了一个读取函数GetBusData,用这个函数可以读取设备的配置空间数据,不解的是,这个函数没有总线号,设备号参数,它怎么知道我要读取哪个设备呢?

Re: 关于PCI配置空间的存取


格蠹老雷 2009-08-18, 12:57 下午

 yushang wrote:
可以使用IRP_MN_QUERY_INTERFACE向PCI总线查询一个接口

严格来说是向设备的PDO(Physical Device Object)来查询接口。PDO是知道自己的位置的,包括BUS和Device号。

这也正是这种方法的用意所在,每个设备只能访问自己的PCI配置空间。原本的Hal函数可以自由访问,但是使用那个函数已经不能通过WHQL徽标测试了。

如果今天还想写个通用的工具来读取所有设备的配置空间,那么就要先取得每个设备的设备对象,然后再去向它的PDO取接口......

 

Re: 关于PCI配置空间的存取


yushang 2009-08-19, 10:11 上午

谢谢。看样子要有个办法能枚举出系统中所有的PCI设备才行,不知道SetupDiGetClassDevs可不可以

Powered by Community Server Powered by CnForums.Net