我正在为 KVM 编写一些概念验证代码,用于 Windows 10 和主机 Linux 系统之间的通信。
我拥有的是一个虚拟 RAM 设备,它实际上连接到主机上的共享内存段。PCIe BAR 2 直接映射到此 RAM。
我的目的是提供一种不涉及其他常用方法(套接字等)的高带宽低延迟数据传输方法。ZeroCopy 将是理想的。
到目前为止,我几乎完成了所有工作,我编写了一个驱动程序,该驱动程序调用MmAllocateMdlForIoSpace
然后MmMapLockedPagesSpecifyCache
通过DeviceIOControl
. 这完美地工作,用户模式应用程序能够寻址共享内存并写入它。
我缺少的是CreateFileMapping
在用户模式下使用来获取HANDLE
此内存的映射的能力。我对 Windows 驱动程序编程相当陌生,因此我不确定这是否可能。关于实现这一目标的最佳方法的任何指示都会非常有帮助。