有没有办法在OAL和内核驱动程序之间共享内存?在OAL和内核之间有NKGlobal结构,可用于共享内存。我想用类似的方法来分享内存。我在Xilinx主板上使用Windows Embedded Compact 2013。
到目前为止,在OAL层中,我将VirtToPhys用于分配的内存以获取物理地址。在内核驱动程序中,我尝试了VirtualAllocCopyEx,但我不知道在pAddr中传递什么。
LPVOID VirtualAllocCopyEx (
HANDLE hSrcProc,
HANDLE hDstProc,
LPVOID pAddr,
DWORD cbSize,
DWORD dwProtect
);
答案 0 :(得分:1)
如果驱动程序在内核模式下运行,它将共享OAL的相同地址空间,因此您可以直接传递指针。您可以在驱动程序或OAL中分配缓冲区,并使用OAL中OEMIoControl中实现的IOCTL共享值(如果您的BSP使用通用生产质量层,您可以检查其他IOCTL的实现方式,通常需要添加一个记录在结构表中并实现管理特定IOCTL的功能。 两个组件都可以使用该指针访问内存。