首页 文章

在Windows 10驱动程序中将内核空间虚拟地址映射到用户空间虚拟地址

提问于
浏览
0

我正在Windows 10(64位)中编写内核模式驱动程序,其主要目的是从DMA读取,我想知道是否不是将内存空间中的内存块复制到用户空间中分配的缓冲区,我可以以某种方式将地址暴露给用户空间(当然不是物理地址),并节省内存复制操作 .

也许是这样的:

  • 分配连续物理内存块(并将物理地址映射到内核空间中的虚拟地址) .

  • 将内核空间中的虚拟地址映射到用户空间中的虚拟地址 .

顺便说一句,因为只有一个内核空间,并且系统中运行的进程数量多的用户空间(这是正确的吗?),我将不得不使用某种句柄来调用进程,以获得适当过程中的虚拟地址......

谢谢你的时间!

1 回答

  • 0

    对于你的(2),如何MmMapLockedPagesSpecifyCache()与AccessMode = UserMode . 请注意重要的警告,以便在执行映射时进行处理,即通过在直接处理来自用户模式代码的调用的驱动程序代码中进行映射,例如: DeviceIoControl的() . 另请注意,要使用此功能,您需要提供描述物理页面的MDL,并且必须锁定这些页面 .

相关问题