面向开发人员的 WinUSB 简介
作为驱动程序开发人员,了解 WinUSB(Windows USB)可以显著简化开发过程,尤其是在使用 USB 设备时。 WinUSB 是 Windows 附带的通用驱动程序,允许你与 USB 设备通信,而无需编写自定义驱动程序。 这样可以节省时间,降低复杂性,并确保不同 Windows 版本的兼容性。
使用 WinUSB 的主要优势
简化开发:
- 易用性:WinUSB 抽象化了 USB 通信所涉及的大部分复杂性,使你能够更轻松地与 USB 设备交互。
- 不需要自定义驱动程序:对于许多 USB 设备,可以直接使用 WinUSB,无需编写和维护自定义驱动程序。
跨平台兼容性:
- 标准化接口:WinUSB 为 USB 通信提供了标准化接口,这对于确保不同 Windows 版本的兼容性非常有用。
时间和成本效益:
- 缩短开发时间:使用 WinUSB 可以显著缩短开发和测试 USB 驱动程序所需的时间。
- 较低的维护成本:由于 WinUSB 由 Microsoft 维护,因此可以依赖它进行更新和支持,从而减少长期维护成本。
访问 USB 功能:
- 完整的 USB 功能:WinUSB 支持各种 USB 功能,包括大容量传输、控制传输、中断传输和异时序传输。
可以使用 WinUSB 完成的操作
设备通信:
- 数据传输:使用批量、控制、中断或异时序传输向/从 USB 设备发送和接收数据。
- 控制请求:发送控制请求以配置设备或检索信息。
设备配置:
- 设置配置:通过选择配置、接口和备用设置来配置 USB 设备。
- 终结点管理:管理数据传输的终结点。
设备枚举:
- 设备标识:枚举和标识连接到系统的 USB 设备。
- 描述符检索:检索设备描述符、配置描述符、接口描述符和终结点描述符。
自定义应用程序:
- 用户模式应用程序:开发使用 WinUSB API 与 USB 设备通信的用户模式应用程序。
- 固件更新:为 USB 设备实现固件更新机制。
测试和调试:
- 原型制作:快速制作 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 中开始的常时等量传输。