体系结构概述

WPD 体系结构可分为三个进程。 在这些进程中是 WPD 的三个主要组件:API、序列化程序和驱动程序。 下图描绘了构成 WPD 体系结构的这些过程和组件。

构成 wpd 的 3 个进程。

WPD 应用程序编程接口

WPD API 作为一个内部 COM 服务器实现。 API 使用标准 Microsoft Win32 API 与相应的 WPD 驱动程序通信。 API 对象和驱动程序都使用名为 WPD 序列化程序的组件将参数打包到 Windows 驱动程序框架 (WDF) -User-Mode Driver Framework (UMDF) 缓冲区或从中解压缩参数。

WPD 序列化程序

WPD 序列化程序也作为一个在产 COM 服务器实现。 WPD API 使用序列化程序将命令和参数打包到发送到驱动程序的消息缓冲区中。 驱动程序使用序列化程序解压缩这些消息缓冲区进行处理。 驱动程序还使用序列化程序将数据和参数打包到返回到 WPD API 的响应缓冲区中,WPD API 使用序列化程序解压缩这些响应缓冲区,以便将结果返回给调用方。

WPD 驱动程序

WPD 驱动程序是作为标准 Windows 驱动程序框架 (WDF) -User-Mode 驱动程序框架 (UMDF) 驱动程序实现的。 WPD 驱动程序由 WUDF 在称为驱动程序主机的单独进程中托管。

驱动程序从 WUDF 反射器接收消息 (此图中未显示,因为接收缓冲区的方式对驱动程序并不重要。有关) 的详细信息,请参阅 WUDF 文档。 驱动程序实现特定于 WPD 的 IOCTL 处理程序来处理 WPD API 收到的 WPD 消息。 驱动程序使用 WPD 序列化程序从这些消息缓冲区中解包命令和参数,并将响应打包到缓冲区中。

WPD 驱动程序可以通过内核模式驱动程序与其设备通信,该驱动程序通常通过 Win32 文件操作访问, (如 CreateFile、ReadFile、WriteFile 等) 。 对于通用总线,Microsoft 将提供供供应商使用的标准内核驱动程序,从而允许供应商提供仅限用户模式的驱动程序解决方案。