我正在将Windows7网络驱动程序代码移植到WEC7。我被MmGetPhysicalAddress接口卡住了。我在WEC7中找不到与此对应的接口。有没有人能帮助我们继续下去..
谢谢。
发布于 2017-07-27 09:56:59
MmGetPhysicalAddress在Windows CE中不可用,但您可能无论如何都不需要它。
在InitializeHandlerEx回调中的某个地方,驱动程序应该调用NdisMAllocateSharedMemory来分配RX/TX缓冲区。
NdisMAllocateSharedMemory同时返回分配的缓冲区的虚拟和物理地址,因此您可以保留物理地址,这样就不需要向操作系统请求它了。
正常情况下,物理地址将与虚拟缓冲区地址一起保存在驱动程序特定的每个缓冲区结构中。
您可以在C:\WINCE700\public\COMMON\oak\drivers\netcard\e100bex\60中找到此功能的示例实现。在mp_init.c中,请注意NICAllocAdapterMemory如何调用NdisMAllocateSharedMemory并将每个缓冲区的物理地址存储在pMpTxbuf->BufferPa中。
发布于 2017-07-27 13:02:04
您可能会看到NDIS:https://msdn.microsoft.com/en-us/library/ee482989.aspx,但是如果缓冲区不是使用NDIS函数分配的,那么它在物理内存中可能不是完全连续的,因此您可能需要检查这一点。
https://stackoverflow.com/questions/45322867
复制相似问题