阅读:1645回复:0
学习和移植WDF模式的PLx9x5x驱动遇到问题
手上是一块自己同事做出来的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文件而已?内容还是自己填的嘛。 |
|