NdisMGetBusData 函数 returns 零

NdisMGetBusData function returns zero

我正在尝试为 PCIe 网卡在 WEC7(Windows Embedded Compact 7)上开发基于 NDIS6.0 的微型端口驱动程序。

当我尝试使用函数 NdisMGetBusData 读取 PCI 配置 space 时,在 MPInitialize 函数中,它返回零。

从文档中,它应该读取读取的字节数。文档中没有更多可用信息。

我没有从 NDIS 包装器层收到任何调试消息。

我在 OAL 层的 OALPCICfgRead 中添加了打印。我也没有得到这个印刷品。

我调用的函数是:

ulResult = NdisMGetBusData(
                       Adapter->AdapterHandle,
                       PCI_WHICHSPACE_CONFIG,
                       FIELD_OFFSET(PCI_COMMON_CONFIG, VendorID),
                       buffer,
                       PCI_COMMON_HDR_LENGTH );

此处 ulResult 为零。

没有从 NDIS 获得任何额外的调试打印。

PCI 控制器下层函数中的打印也没有出现。

如果有人帮助我调试这个问题,那将会很有帮助。

问题出在 WEC7 的 CEDDK.dllDDK_BUS.lib 中的 ARM 不支持 PCI 总线 HalGetBusDataByOffsetHalSetBusDataByOffset 函数(它们内置了对 x86 的支持 ).

当我从 public 代码克隆此驱动程序并添加此支持时,该功能现在运行良好。

这似乎在 MSDN 中没有记录。