naco6328
驱动牛犊
驱动牛犊
  • 注册日期2002-10-16
  • 最后登录2002-12-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1349回复:7

如何用程序读写PCI配置寄存器(30分)

楼主#
更多 发布于:2002-10-28 21:11
现在已经知道一种方法:
    地址0xcf8是配置寄存器的地址寄存器,它的32位操作的每一位的意义如下:busnumber、functionnumber和devicenumber都是在计算机启动时由系统分配,registernumber就是我们所需要进行读写的寄存器号,最低两位为0,8比特刚好构成256个字节的配置寄存器地址空间。口地址0xcfc就是数据寄存器,写完地址寄存后,对该口进行双字读就得到配置寄存器里面的值,写入一个双字就完成对相应配置寄存器的写操作。

不知道该如何把busnumber、functionnumber、devicenumber和registernumber的值组合成一个32位的数写入0xcf8。

如果知道别的读写配置寄存器的方法也请告知。
Alexder
驱动牛犊
驱动牛犊
  • 注册日期2002-02-05
  • 最后登录2002-10-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-10-29 08:41
USE this \"HalGetBusDataByOffset\".
jovianzhoujun
驱动牛犊
驱动牛犊
  • 注册日期2002-03-13
  • 最后登录2004-12-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-29 08:53
看看PCI规范吧,上面有。

建议,最好不要这样用。
naco6328
驱动牛犊
驱动牛犊
  • 注册日期2002-10-16
  • 最后登录2002-12-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-29 09:09
看看PCI规范吧,上面有。

建议,最好不要这样用。
 


如果不这样做,那有什么其他的方法可以在98下读写PCI设备的配置空间的寄存器
minsoft
驱动小牛
驱动小牛
  • 注册日期2001-07-30
  • 最后登录2007-03-06
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-10-29 10:14
BIT:
31-24:Reserve,0x80
23-16:Bus number
15-11:device number,5bits
10-8:function number,3bits
7-0:register number(0-256)
少了e,就少了全部
ha_limin
驱动牛犊
驱动牛犊
  • 注册日期2002-10-12
  • 最后登录2011-07-21
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望23点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-10-29 14:46
StreamClassReadWriteConfig
          (
pSrb->HwDeviceExtension,
TRUE,
(PVOID)&PciConfigSpace,
0,
64 )
jovianzhoujun
驱动牛犊
驱动牛犊
  • 注册日期2002-03-13
  • 最后登录2004-12-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-10-29 15:14
可以自己生成IRP.看看DDK文档
d_iyui
驱动牛犊
驱动牛犊
  • 注册日期2002-10-28
  • 最后登录2005-01-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-10-30 12:30
BIT:
31-24:Reserve,0x80
23-16:Bus number
15-11:device number,5bits
10-8:function number,3bits
7-2:register number(0-256)
1-0:must be 00
每次都会读出4个bit 来,所以你最后2位最好是00

游客

返回顶部