bighawk
驱动牛犊
驱动牛犊
  • 注册日期2002-04-24
  • 最后登录2006-01-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1444回复:6

从配置空间读的数据怎么不对?

楼主#
更多 发布于:2002-06-10 21:50
在头文件里我定义了 KMemoryRange m_MemRange 对象。在
OnStartDevice(KIrp I)函数里我对 m_MemRange 进行了初始化:

  PCM_RESOURCE_LIST pRawList = I.AllocatedResources();
  PCM_RESOURCE_LIST pResList = I.TranslatedResources();
  status = m_MemRange.Initialize(pResList, pRawList, 0);
  if ( !NT_SUCCESS(status) )
      return status;
在Read(Iirp)函数里
    PUCHAR pBuffer=(PUCHAR)ExAllocatePool(NonPagedPool,10);
    RtlZeroMemory(pBuffer,10)
    m_MemRange.inb(0,pBuffer,4);

    t<<\"pBuffer=\"<<UCHAR(*pBuffer)<<\"\\n\";
    t<<\"pBuffer+1=\"<<UCHAR(*(pBuffer+1))<<\"\\n\";
根据程序应该输出PCI里配置空间偏移量为00和01 单元里的两个字节
对应我的设备识别号:7146
可是在Monitor输出的结果却是
   pBuffer=0x69
   pBuffer+1=0x51

问题出在哪里?请大家指点以下。十分感谢!




bighawk
驱动牛犊
驱动牛犊
  • 注册日期2002-04-24
  • 最后登录2006-01-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-10 21:53
补充一点:上述程序是用DriverWorks开发的。
yanghui
驱动牛犊
驱动牛犊
  • 注册日期2002-01-29
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-10 23:29
到底是厂商识别号还是设备识别号,根据PCI配置空间的定义,偏移量00及01是厂商识别号,偏移量02及03才是设备识别号
leerom
驱动小牛
驱动小牛
  • 注册日期2001-06-08
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-11 09:02
DriverWork我还没用过,但你的代码给我的感觉是读写了卡上的寄存器,而不是pci的配置空间
leerom
bighawk
驱动牛犊
驱动牛犊
  • 注册日期2002-04-24
  • 最后登录2006-01-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-11 11:08
到底是厂商识别号还是设备识别号,根据PCI配置空间的定义,偏移量00及01是厂商识别号,偏移量02及03才是设备识别号

我的PCI卡厂商识别号是1131,设备识别号是7146,可我用
SoftIce命令PCI -raw 看PCI卡配置空间时却是
 Vendor:1131
 Device:7146
 .........

以下是偏移地址内容:

 00: 71461131  02800006 ......... ..........
 10: E9000000  ........ ......... ..........
 20: ........  ........ ......... ..........

偏移量 00,01所对应的内容是7146还是1131呢?
如是7146,那不是和配置空间的定义不符了吗?

James.Ji
驱动老牛
驱动老牛
  • 注册日期2001-09-17
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分-9分
  • 威望-8点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-06-11 14:20

/****************
我的PCI卡厂商识别号是1131,设备识别号是7146,可我用
SoftIce命令PCI -raw 看PCI卡配置空间时却是
Vendor:1131
Device:7146
.........

以下是偏移地址内容:

00: 71461131 02800006 ......... ..........
10: E9000000 ........ ......... ..........
20: ........ ........ ......... ..........

偏移量 00,01所对应的内容是7146还是1131呢?
如是7146,那不是和配置空间的定义不符了吗?
***************/

应该是1131。

/***********
DriverWork我还没用过,但你的代码给我的感觉是读写了卡上的寄存器,而不是pci的配置空间
************/
这位老兄应该是正确的,你读取的是PCI内存空间,而不是配置空间。


车到山前必有路。 虽然有些土,却是我最有感触的一句话。
bighawk
驱动牛犊
驱动牛犊
  • 注册日期2002-04-24
  • 最后登录2006-01-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-06-11 16:03
多谢两位。
我读的确实是PCI内存空间,不是配置空间。
游客

返回顶部