UMDF 驱动程序的初级指南

从 Windows Vista 开始,操作系统在会话 0 中隔离服务和系统进程,而应用程序在后续的编号更高的会话中运行。 由于 UMDF 主机进程 (WUDFHost.exe) 是在会话 0 中运行的系统进程之一,因此 UMDF 驱动程序与应用程序隔离。 因此,在开发驱动程序时,必须遵循以下准则:

  • 请勿 (UI) 元素(如对话框)创建用户界面,也不要依赖于用户输入。 由于用户未在会话 0 中运行,因此他(她)永远不会看到 UI,并且无法响应 UI。

    同样,请勿操作任何 UI 元素。 例如,UMDF 驱动程序无法枚举用户会话中的窗口。

  • 如果驱动程序必须与服务通信,请使用客户端/服务器机制,例如远程过程调用 (RPC) 或命名管道。

  • 在 Windows API 中调用函数时要小心。 某些函数可能会操作 UI 元素或尝试访问用户会话中的命名对象。 不要调用你不会从用户模式服务调用的 Windows 函数。 一般情况下,UMDF 驱动程序可以安全地调用在 kernel32.dll 中导出的函数,但不能调用在 user32.dll 中导出的函数。

    UMDF 驱动程序可能会调用 Windows 函数来执行以下任务:

有关在框架之外使用系统服务的其他信息,请参阅第 14 章 (“Beyond the Frameworks”) Orwick、Penny 和 Guy Smith。 使用 Windows Driver Foundation 开发驱动程序。 华盛顿州雷德蒙德:Microsoft Press,2007年。

有关会话零隔离的其他信息,请参阅 会话 0 隔离对 Windows 中的服务和驱动程序的影响