WinUSB 体系结构和模块

WinUSB 由两个主要组件组成:

  • Winusb.sys是一种内核模式驱动程序,可以作为筛选器或函数驱动程序安装,位于 USB 设备的内核模式设备堆栈中的协议驱动程序之上。
  • Winusb.dll是公开 WinUSB 函数的用户模式 DLL。 当Winusb.sys安装为设备的函数驱动程序时,应用程序可以使用这些函数与它进行通信。

对于不需要自定义函数驱动程序的设备,Winusb.sys可以作为函数驱动程序安装在设备的内核模式堆栈中。 然后,用户模式进程可以使用一组设备 I/O 控制请求或通过调用 WinUSB 函数来与Winusb.sys通信。

下图显示了包含多个 Winusb.sys 实例的 USB 驱动程序堆栈。

winusb 驱动程序和设备对象堆栈。

上图显示了一个实现三个设备接口类的示例 WinUSB 配置,每个类都有一个已注册的设备接口:

  • Winusb.sys实例 1 注册设备接口 A,该接口支持用户模式驱动程序 (Usboem.dll) 。
  • Winusb.sys的实例 2 注册了设备接口 B,该接口支持使用系统服务 (SVCHOST) 与Winusb.dll通信的扫描程序 (Usbscan.exe) 的用户模式驱动程序。
  • Winusb.sys 实例 3 注册设备接口 C,它支持固件更新实用工具 (Usbfw.exe) 。

Winusb.sys只加载了一个实例。 PDO 可以表示非复合设备 (例如关系图) 中的实例 1,也可以表示复合设备上的接口或接口集合 (例如实例 2 和 3) 。 对于 (WMCDC) 设备的 USB 无线移动通信设备类,PDO 甚至可以表示多个接口集合。 (有关 WMCDC 设备的 PDO 的详细信息,请参阅 无线移动通信设备类的支持。)

任何用户模式应用程序都可以通过加载 WinUSB 动态链接库 (Winusb.dll) 并调用此模块公开的 WinUSB 函数来与 USB 堆栈通信。

WinUSB (winusb.sys) 安装
如何通过 WinUSB Functions 访问 USB 设备
用于修改管道策略的 WinUSB 函数
WinUSB 电源管理
WinUSB 函数
WinUSB