原创来自于《windows驱动开发技能详解》。PCI由设备存储信息,I/O地址空间和接下来要侧重显现的装备空间。前两者能够经过装备空间的Base Address Register[]获取。(之后的博文都选用WDM分层驱动结构,假如之后学习了WDF结构,那悉数改用最新的驱动结构,这样能够让驱动在 win7或更高体系上运转。)
书上用的是传到驱动层,然后在操作端口,获取的数据在应用层显现。不过这种办法不是很喜爱,比较喜爱在驱动层敞开I/O位图位,然后让应用层具有端口操作权限。所以,在看本博文之前,请先了解之前的关于在应用层敞开端口操作权限的相关函数解说的博文,写好一个驱动,能敞开端口读取权限。然后再持续阅览本文。
以下是类型0的PCI装备结构:
假如看不懂,那需求回去温习数据结构根底哦。这个图很简单,一共256个字节。自己能够写一个结构去承受这个数据,可是书上给了现成的,我也就偷偷闲,注释了1一个重要的当地(40h-FFh)。下面来看看书上结构的奇妙之处。下面三个常量,就是3种类型中基地址数组巨细。(下面结构是一同的,仅仅分了几张图发,便利解说)
类型0装备头不同的当地
类型1装备头不同的当地
类型2装备头的不同
类型2装备头的不同
这儿充分说明union联合声明的好用。
书上界说了一个_PCI_SLOT_NUMBER结构位结构,可是没界说完,还要自己进行位操作。为了便利,我直接把这个结构完善了,每次填写就能够了。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/233414.html