为 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 客户端驱动程序编程。

可以从 通用串行总线文档库 网站下载官方 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 设备的电源管理功能,这是一组丰富且复杂的电源管理功能。