bigtrong
驱动牛犊
驱动牛犊
  • 注册日期2012-08-06
  • 最后登录2012-11-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1594回复:0

学习和移植WDF模式的PLx9x5x驱动遇到问题

楼主#
更多 发布于:2012-10-15 20:55
手上是一块自己同事做出来的PCI卡,FPGA那些都是自定义的。我想将PLx9x5x的驱动(WDK的例子,WDF模式)改改用起来。

当前进行了一些尝试,将inf中的devID和vendorID修改后,设备管理器中可将pci卡识别出来。在安装驱动的过程中调试,会出错在如下的位置(prepareHardware函数中):
if(!foundRegs && desc->u.Memory.Length == 0x200)
系统得到的u.Memory.Length 的值是0x100.
我将代码中修改为if(!foundRegs && desc->u.Memory.Length == 0x100)
再编译调试,会出错在:
if (!(foundRegs && foundSRAM)){
     TraceEvents(TRACE_LEVEL_ERROR, DBG_PNP, "PLxMapResources:Missing resources");
     return STATUS_DEVICE_CONFIGURATION_ERROR;
}
不明白device_configuration是在哪里出错了,前面的代码都是系统调用,没有看到要自行填充的字段。
考虑下来,主要是desc = WdfCmResourcesListGetDescriptor(ResourceTranslated,i)这个函数不能理解,主要是搞不清楚ResourceTransltaed这个资源是什么,框架是如何分配的资源;更加搞不清楚该函数返回的desc中的每一项都是什么含义,具体怎么参与工作的。

另外,TRACEVIEW用了一下(PLx9x5x的例子中有TraceEvent。),生成了一个200K的文件,但是打开之后没有看到有用的内容。traceview在使用时,windbg那一列显示FALSE,不明白。想说应该和DbgPrint的方式没什么本质区别吧?只是使用TraceEvent生成了一个log文件而已?内容还是自己填的嘛。
游客

返回顶部