UMDF 驱动程序主机进程

本主题介绍User-Mode驱动程序框架 (UMDF) 驱动程序主机过程,以及它如何与其他 UMDF 组件配合使用。 它适用于 UMDF 版本 1 和 2。

驱动程序主机进程 (Wudfhost.exe) 是驱动程序管理器服务的子进程。 Wudfhost.exe通常在本地计算机上具有最低权限的 LocalService 帐户中运行。 Wudfhost.exe实例除了加载框架 DLL 外,还加载一个或多个 UMDF 驱动程序 DLL。 驱动程序主机进程提供一个运行时环境,用于处理驱动程序管理器和反射器之间的进程间通信 (IPC) ,以及 I/O 调度、驱动程序加载、驱动程序分层和线程池管理。

驱动程序管理器可以创建Wudfhost.exe的多个并发实例,如下所示:

  • 如果 UMDF 驱动程序是使用版本 1.11 生成的,并且Windows 8上运行,则默认情况下,驱动程序管理器会创建可以托管多个设备堆栈的 Wudfhost 的单个实例。 此方法称为 设备池

    如果 UMDF 驱动程序是使用版本 2 生成的,并在 Windows 8.1 或 Windows 10 上运行,则默认情况下,池也处于打开状态。

  • 如果驱动程序是使用 UMDF 版本 1.9 或更早版本生成的,则框架会为每个设备堆栈创建主机进程的单独实例, (Wudfhost) 。

有关设备池的详细信息,请参阅 在 UMDF 驱动程序中使用设备池

每个Wudfhost.exe进程在其自己的地址空间中运行,因此与应用程序进程和驱动程序主机的其他实例隔离。 在同一进程中运行的 UMDF 驱动程序 (设备池) 共享一个地址空间,并且不会相互隔离。

可以在同一主机进程或不同的主机进程中同时加载使用 UMDF 版本 1 和 2 生成的驱动程序。 例如,默认情况下,驱动程序管理器会在运行 Windows 8.1 或更高版本的计算机上的同一主机进程中加载 UMDF 1.11 驱动程序和 UMDF 2 驱动程序。

但是,不能在同一设备堆栈中加载 UMDF 版本 1 和 2 驱动程序。 例如,不能在 UMDF 版本 2 函数驱动程序之上加载 UMDF 版本 1 筛选器驱动程序。

有关显示驱动程序主机与其他 UMDF 组件的关系图,请参阅 UMDF 概述