为 USB 设备开发 Windows 客户端驱动程序的概述
本文介绍 Windows 操作系统对通用串行总线 (USB) 的支持,以便开发可与 Windows 互操作的 USB 设备驱动程序。
USB 设备是通过单个端口连接到计算机的外设,例如鼠标设备和键盘。 USB 客户端驱动程序是计算机上安装的软件,该软件与硬件通信以使设备正常运行。 如果设备属于 Microsoft 支持的设备类,Windows 会为该设备加载 Microsoft 提供的 USB 驱动程序(随机类驱动程序)之一。 否则,自定义客户端驱动程序必须由硬件制造商或第三方供应商提供。 当 Windows 第一次检测到该设备时,用户会为该设备安装客户端驱动程序。 成功安装后,Windows 将在每次连接该设备时加载此客户端驱动程序,并在该设备与主计算机断开连接时卸载此驱动程序。
可以通过使用 Windows 驱动程序框架 (WDF) 或 Windows 驱动程序模型 (WDM) 来开发 USB 设备的自定义客户端驱动程序。 大多数客户端驱动程序将其请求发送到 Microsoft 提供的 USB 驱动程序堆栈(该堆栈进行硬件抽象层 (HAL) 函数调用,以便将客户端驱动程序的请求发送到硬件),而不是直接与硬件通信。 本部分中的主题介绍客户端驱动程序可以发送的典型请求,以及客户端驱动程序为创建这些请求而必须调用的设备驱动程序接口 (DDI)。
开发人员受众
USB 设备的客户端驱动程序是一个 WDF 或 WDM 驱动程序,它通过由 USB 驱动程序堆栈公开的 DDI 与设备进行通信。 本部分供已熟悉 WDM 的 C/C++ 程序员使用。 使用此部分之前,应了解基本的驱动程序开发。 有关详细信息,请参阅开始在 Windows 上使用驱动程序。 对于 WDF 驱动程序,客户端驱动程序可以使用专门用于处理 USB 目标的内核模式驱动程序框架 (KMDF) 或用户模式驱动程序框架 (UMDF) 接口。 有关 USB 特定接口的详细信息,请参阅 WDF USB 参考和 UMDF USB I/O 目标接口。
开发工具
Windows 驱动程序工具包 (WDK) 包含开发驱动程序所需的资源,如头文件、库、工具和示例。
USB 编程参考
提供 USB 客户端驱动程序所使用的 I/O 请求、支持例程、结构和接口的规范。 这些例程和相关的数据结构在 WDK 头文件中定义。
USB 驱动程序示例
使用这些示例可开始着手 USB 客户端驱动程序编程。
- Usbsamp 通用 USB 驱动程序
- OSR USB-FX2 的示例 KMDF 函数驱动程序
- 用于 OSR USB-FX2 的 UMDF 功能驱动程序示例(UMDF 版本 1)
- 用于 OSR USB-FX2 的功能驱动程序示例(UMDF 版本 2)
相关标准与规范
可以从通用串行总线文件库网站下载 USB 官方规范。 该网站包含各种通用串行总线规范修订版的链接。
文档部分
USB 客户端驱动程序开发入门
USB 驱动程序开发简介。 介绍在为设备提供 USB 驱动程序时如何选择最适合的模型。 使用 Microsoft Visual Studio 随附的 USB 模板编写、生成并安装你的第一个主干用户模式和内核模式 USB 驱动程序。Windows 中的 USB 主机端驱动程序
提供 USB 驱动程序堆栈体系结构的概述。关于 USB 块请求 (URB)
了解客户端驱动程序如何生成称为 USB 请求块 (URB) 的可变长度数据结构,以便将请求提交到 USB 驱动程序堆栈。USB 描述符
了解客户端驱动程序如何生成称为 USB 请求块 (URB) 的可变长度数据结构,以便将请求提交到 USB 驱动程序堆栈。选择 USB 驱动程序中的 USB 配置
设备配置指的是客户端驱动程序执行的任务,用于选择 USB 配置和每个接口中的备用接口。 此部分显示了选择 USB 配置所需的方法调用。在 USB 客户端驱动程序中发送 USB 数据传输
介绍 USB 管道、I/O 请求的 URB,以及客户端驱动程序如何使用设备驱动程序接口 (DDI) 将数据传入和传出 USB 设备。在 USB 客户端驱动程序中实施电源管理
使用符合通用串行总线 (USB) 规范的 USB 设备的电源管理功能,这是一组丰富且复杂的电源管理功能。