新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 获取PCI总线上任何配置头信息

获取PCI总线上任何配置头信息

作者: 时间:2016-12-15 来源:网络 收藏

这个定义来自于以下结构图

当然,如果不喜欢定义结构,那么得定义一个宏如下
#define CONFIG_ADDRESS(f, Bus, Device, Function, Registery)
((f<<31) | (Bus<<24) | (Device<<16) | (Function<<8) | (Registry<<2))
关于这几个参数的含义:

Bus Number(总线):

本文引用地址:https://www.eepw.com.cn/article/201612/330385.htm

有256个Bus可供查询.当扫描硬件时,最好扫描256个Bus(从0开始编号)

Device Number:

挂载在Bus上的设备,可以是显卡,声卡,北桥等.一个Bus最多被挂载32个设备.(从0开始编号)

Function Number:

每个Device至少含有1个或者多个Function.(从0开始编号)

Register Number:

最多有256个注册标识.0-3F用于PCI总线的特殊用途;40-FF用于自定义.

好了,一切准备就绪后就可以开始PCI配置信息获取和显示了。

先看看应用程序中调用获取和现实两个函数的代码,包括了如何填写_PCI_SLOT_NUMBER结构



现在给出DisplayPciCommonConfig的代码(devicename由GetInterfaceName函数得来,关于这个函数的实现,参考之前的获取WDM接口名称方法博文)


注释很清楚,ConfigData存放的是数据,不是数据指针,大家要小心!Out_32和In_32是用C语言和汇编混编的函数,大家参考《windows驱动开发技术详解》里面的代码。

然后便是DisplayPciCommonConfig函数代码



如果有闲心,可以完成一个类型1,类型2,类型0三种配置头的信息显示。

最后来看看显示结果:(正如前面声明的,bus=0,device=0,function=0,enable=1,register=0)




上一页 1 2 下一页

关键词: PCI总线配置头信

评论


技术专区

关闭