WPD 体系结构可分为三个进程。 在这些进程中是 WPD 的三个主要组件:API、序列化程序和驱动程序。 下图描绘了构成 WPD 体系结构的进程和组件。
WPD 应用程序编程接口
WPD API 作为一个内部 COM 服务器实现。 API 使用标准 Microsoft Win32 API 与相应的 WPD 驱动程序通信。 API 对象和驱动程序都使用名为 WPD 序列化程序的组件将参数打包到 Windows Driver Foundation (WDF) -User-Mode Driver Framework (UMDF) 缓冲区或从中解压缩参数。
WPD 序列化程序
WPD 序列化程序是作为一个在产 COM 服务器实现的。 WPD API 使用序列化程序将命令和参数打包到发送到驱动程序的消息缓冲区中。 驱动程序使用序列化程序解压缩这些消息缓冲区进行处理。 驱动程序还使用序列化程序将数据和参数打包到返回到 WPD API 的响应缓冲区中,WPD API 使用序列化程序解压缩这些响应缓冲区以返回到调用方。
WPD 驱动程序
WPD 驱动程序作为标准 Windows Driver Foundation (WDF) -User-Mode Driver Framework (UMDF) 驱动程序实现。 WPD 驱动程序由 UMDF 在称为驱动程序主机的单独进程中托管。
驱动程序从 UMDF 反射器接收消息, (图中未显示此信息,因为接收缓冲区的方式对驱动程序来说并不重要。有关) 的详细信息,请参阅 UMDF 文档。 驱动程序 (IOCL) 处理程序实现特定于 WPD 的 I/O 控制代码,以处理 WPD API 收到的 WPD 消息。 驱动程序使用 WPD 序列化程序从这些消息缓冲区中解包命令和参数,并将响应打包到返回缓冲区中。
WPD 驱动程序可以通过内核模式驱动程序与其设备进行通信,通常通过 Win32 文件操作访问, (即 CreateFile、ReadFile、WriteFile 等) 。 对于通用总线,Microsoft 将提供供供应商使用的标准内核驱动程序,从而允许供应商提供仅限用户模式的驱动程序解决方案。 此外,对于媒体传输协议 (MTP) 和大容量存储类 (MSC) 设备,Microsoft 将提供 WPD 类驱动程序。
有关 WPD 驱动程序的详细信息,请参阅 Windows 驱动程序工具包中的 Windows 可移植设备驱动程序文档。
相关主题