UMDF 的体系结构

本主题介绍驱动程序管理器如何生成用户模式设备堆栈,以及主机进程、反射器以及驱动程序管理器如何处理应用程序发送到 User-Mode Driver Framework (UMDF) 驱动程序的 I/O 请求。

与内核模式堆栈类似,用户模式堆栈的构造和拆毁由即插即用 (PnP) 事件驱动。 生成内核模式堆栈后,反射器会通知驱动程序管理器开始构建用户模式堆栈。 驱动程序管理器启动驱动程序主机进程,并为启动的进程提供足够的信息来生成用户模式堆栈。 通过这种方式,可将用户模式堆栈视为内核模式堆栈的扩展。

驱动程序主机进程为用户模式驱动程序提供执行环境,并在用户模式堆栈中的驱动程序之间路由消息。 反射器使用基于消息的进程间通信机制来与驱动程序管理器和主机进程进行通信。

umdf 组件,包括反射器中的向上和向下设备对象。

若要向 UMDF 驱动程序发送 I/O 请求,应用程序会调用 Win32 文件 I/O 函数,例如 CreateFileReadFileExCancelIoExDeviceIoControl。 当反射器收到来自客户端应用程序的请求时,它会将请求发送到相应的驱动程序主机进程。 然后,驱动程序主机进程将请求路由到正确的用户模式设备堆栈的顶部。

请求由用户模式堆栈中的某个驱动程序完成,或由其中一个驱动程序转发回反射器。 当反射器收到来自用户模式驱动程序堆栈的请求时,它会在内核模式堆栈中向下发送请求以完成。