我需要在用户空间和内核空间之间共享内存。内存是在用户空间和内核中分配的,我想用物理地址构建一个内存描述符列表来初始化一个 DMA 控制器(驻留在 FPGA 中)。
我正在使用带有 WEC2013 的 Zynq (ARM+FPGA)。
Microsoft 提供了2 种方法,“IOCTL 方法”和“共享内存对象”方法,但我不能使用其中任何一种:
- IOCTL:因为 Windows Embedded Compact 忽略了方法参数,所以我不能使用 METHOD_xxx_DIRECT。IOCTL 上的 MSDN
- 共享内存对象:内存已由用户分配,因此我无法创建命名内存对象(使用 CreateFileMapping)。复制数据会花费太多时间。
还有另一种方法可以做到这一点吗?或者我可以在用户空间中获得 MDL 吗?