访问 User-Space 内存

驱动程序无法通过用户模式虚拟地址直接访问内存,除非是:

  • 在触发驱动程序当前 I/O 操作的用户模式线程的上下文中运行。
  • 使用该线程的虚拟地址。

驱动程序应使用 用户模式访问器 (UMA) 接口安全地访问用户模式内存。

只有最高级别的驱动程序(如 FSD)可以确保在此类用户模式线程的上下文中调用其调度例程。 在为较低驱动程序设置 IRP 之前,最高级别的驱动程序可以调用 MmProbeAndLockPages 来锁定用户缓冲区。

缓冲 I/O直接 I/O 设置其设备对象的最低级别和中间驱动程序可以依赖 I/O 管理器或最高级别的驱动程序将有效访问权限传递给锁定的用户缓冲区或 IRP 中的系统空间缓冲区。