本主题介绍 User-Mode 驱动程序框架(UMDF)驱动程序主机进程及其与其他 UMDF 组件的工作方式。 它适用于 UMDF 版本 1 和 2。
驱动程序主机进程(Wudfhost.exe)是驱动程序管理器服务的子进程。 Wudfhost.exe 通常在本地计算机上具有最低权限的 LocalService 帐户中运行。 除了框架 DLL 之外,Wudfhost.exe 实例还会加载一个或多个 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 概述。