面向开发人员的 WinUSB 简介

作为驱动程序开发人员,了解 WinUSB(Windows USB)可以显著简化开发过程,尤其是在使用 USB 设备时。 WinUSB 是 Windows 附带的通用驱动程序,允许你与 USB 设备通信,而无需编写自定义驱动程序。 这样可以节省时间,降低复杂性,并确保不同 Windows 版本的兼容性。

使用 WinUSB 的主要优势

  1. 简化开发

    • 易用性:WinUSB 抽象化了 USB 通信所涉及的大部分复杂性,使你能够更轻松地与 USB 设备交互。
    • 不需要自定义驱动程序:对于许多 USB 设备,可以直接使用 WinUSB,无需编写和维护自定义驱动程序。
  2. 跨平台兼容性

    • 标准化接口:WinUSB 为 USB 通信提供了标准化接口,这对于确保不同 Windows 版本的兼容性非常有用。
  3. 时间和成本效益

    • 缩短开发时间:使用 WinUSB 可以显著缩短开发和测试 USB 驱动程序所需的时间。
    • 较低的维护成本:由于 WinUSB 由 Microsoft 维护,因此可以依赖它进行更新和支持,从而减少长期维护成本。
  4. 访问 USB 功能

    • 完整的 USB 功能:WinUSB 支持各种 USB 功能,包括大容量传输、控制传输、中断传输和异时序传输。

可以使用 WinUSB 完成的操作

  1. 设备通信

    • 数据传输:使用批量、控制、中断或异时序传输向/从 USB 设备发送和接收数据。
    • 控制请求:发送控制请求以配置设备或检索信息。
  2. 设备配置

    • 设置配置:通过选择配置、接口和备用设置来配置 USB 设备。
    • 终结点管理:管理数据传输的终结点。
  3. 设备枚举

    • 设备标识:枚举和标识连接到系统的 USB 设备。
    • 描述符检索:检索设备描述符、配置描述符、接口描述符和终结点描述符。
  4. 自定义应用程序

    • 用户模式应用程序:开发使用 WinUSB API 与 USB 设备通信的用户模式应用程序。
    • 固件更新:为 USB 设备实现固件更新机制。
  5. 测试和调试

    • 原型制作:快速制作 USB 设备通信的原型,以测试硬件功能。
    • 调试:使用 WinUSB 调试主机和 USB 设备之间的通信问题。

WinUSB 的组件

WinUSB 包括:

  • 内核模式驱动程序(winusb.sys)
  • 一个用户模式动态链接库(winusb.dll),用于公开 winusb.h 中所述的 WinUSB 函数。 借助这些函数,你可以使用用户模式软件管理 USB 设备。

默认情况下,winusb.sys作为上层筛选器驱动程序安装在设备的内核模式堆栈中。 应用与设备的 UMDF 功能驱动程序通信,以发出读取、写入或设备 I/O 控制请求。 在此配置中,winusb.sys充当设备堆栈的即插即用和电源所有者。 还可以将winusb.sys安装为 USB 设备的函数驱动程序。

WinUSB 入门

本部分包括有关以下方面的信息:

  • 为设备选择正确的驱动程序
  • 使用 WinUSB 与 USB 设备通信
  • 将winusb.sys安装为 USB 设备的函数驱动程序

你还将找到详细的代码示例,其中显示了应用和 USB 设备如何通信。

注意

WinUSB 支持在 Windows 8 中开始的常时等量传输。