我正在将Windows 7网络驱动程序代码移植到WEC7。我遇到了API MmGetPhysicalAddress。我在WEC7中找不到相应的API。任何人都可以帮助进一步..
感谢。
答案 0 :(得分:0)
MmGetPhysicalAddress
在Windows CE中不可用,但您可能无论如何都不需要它。
在InitializeHandlerEx
回调中的某个地方,驱动程序应该调用NdisMAllocateSharedMemory来分配RX / TX缓冲区。
NdisMAllocateSharedMemory
返回已分配缓冲区的虚拟和物理地址,因此您可以保留物理地址,然后就不需要从操作系统请求它。
通常,物理地址将与驱动程序特定的每缓冲区结构一起保存在虚拟缓冲区地址中。
您可以在C:\WINCE700\public\COMMON\oak\drivers\netcard\e100bex\60
中找到此示例的示例。在mp_init.c
中,请注意NICAllocAdapterMemory
如何调用NdisMAllocateSharedMemory
并将每个缓冲区的物理地址存储在pMpTxbuf->BufferPa
中。
答案 1 :(得分:0)
您可以查看LockPages: https://msdn.microsoft.com/en-us/library/ee482989.aspx 但是如果没有使用NDIS函数分配缓冲区,它可能在物理内存中不是完全连续的,因此您可能需要检查它。