通用串行总线 (USB)

通用串行总线 (USB) 提供了一个可扩展且可热插拔的即插即用串行接口,可确保为键盘、鼠标、游戏杆、打印机、扫描仪、存储设备、调制解调器和视频会议摄像机之类的外设提供标准的低成本连接。 对于所有使用旧端口(例如 PS/2 端口、串行端口和并行端口)的外围设备,建议迁移到 USB。

USB-IF 是一个特别兴趣组 (SIG),负责维护官方 USB 规范、测试规范和工具。

Windows 操作系统为 USB 主控制器、集线器以及符合官方 USB 规范的设备和系统提供本机支持。 Windows 还提供编程接口,用于开发可与 USB 设备通信的设备驱动程序应用程序

适用于设备生成器的 USB 图标适用于驱动程序开发人员的 USB 图标适用于应用开发人员的 USB 图标USB HCK 认证图标

Windows 中的 USB

开发工具

USB 示例

创建适用于 Windows 的 USB 驱动程序或应用

USB 驱动程序开发简介。 介绍在为设备提供 USB 驱动程序时如何选择最适合的模型。

编写 USB 客户端驱动程序(KMDF、UMDF)

本部分包含有关使用 Microsoft Visual Studio 附带的 USB 模板编写第一个用户模式和内核模式 USB 驱动程序的教程。

编写 USB 主控制器驱动程序

如果要开发不符合规范的 xHCI 主控制器或开发自定义的非 xHCI 硬件 ((例如虚拟主机控制器) ),则可以编写与 UCX 通信的主控制器驱动程序。 例如,可以考虑支持 USB 设备的无线坞。 电脑通过无线坞与 USB 设备通信,使用基于 TCP 的 USB 作为传输方式。

为 USB 设备编写功能控制器驱动程序

可以开发控制器驱动程序,用于处理由主机发送到设备的所有 USB 数据传输内容和命令。 此驱动程序可以与 Microsoft 提供的 USB 功能控制器扩展 (UFX) 通信。

为 USB 功能控制器开发 Windows 驱动程序

USB 函数类扩展 (UFX) 参考

编写 USB 类型 C 连接器驱动程序

Windows 10 引入了对新 USB 连接器:USB 类型 C 的支持。 可以为连接器编写驱动程序,以便与 Microsoft 提供的类扩展模块UcmCx 通信,以便处理与类型 C 连接器相关的场景,例如,哪些端口支持类型 C、哪些端口支持功率输出。

为 USB 类型 C 连接器开发 Windows 驱动程序

USB 连接器管理器类扩展 (UcmCx) 参考

编写 USB 双角色控制器驱动程序

Windows 10 现在支持 USB 双角色控制器。 Windows 包含适用于 ChipIdea 和 Synopsis 控制器的内置客户端驱动程序。 对于其他控制器,Microsoft 提供一组编程接口,方便双角色类扩展 (UrsCx) 及其客户端驱动程序互相通信,从而处理双角色控制器的角色切换功能。

有关此功能的详细信息,请参阅:

USB 双角色驱动程序堆栈体系结构

USB 双角色控制器驱动程序编程参考

编写用于模拟设备的 USB 驱动程序

可以开发模拟通用串行总线 (USB) 主机控制器驱动程序和连接的虚拟 USB 设备。 这两个组件组合成单个 KMDF 驱动程序,该驱动程序可以与 Microsoft 提供的 USB 设备模拟类扩展 (UdeCx) 通信。

开发模拟 USB 设备 (UDE) 的 Windows 驱动程序

模拟 USB 主控制器驱动程序编程参考

适用于开发 USB 驱动程序的 WDF 扩展

编写 UWP 应用

  • 与 USB 设备交谈,从头到尾:提供有关在 UWP 应用中实现 USB 功能的分步说明。 若要为 USB 设备编写此类应用,需要 Visual Studio 和 Microsoft Windows 软件开发工具包 (SDK) 。

  • Windows.Devices.Usb:UWP 命名空间编程参考。

编写 Windows 桌面应用

通过 Windows 测试 USB 设备

Microsoft USB 测试工具 (MUTT) 设备的概述

获取相关工具的信息,这些工具可以用来测试 USB 硬件或软件、捕获操作和其他系统事件的跟踪,以及观察 USB 驱动程序堆栈如何响应客户端驱动程序或应用程序发送的请求。

阅读硬件认证工具包中提供的测试的概述。硬件供应商和设备制造商可以通过这些测试准备其 USB 设备和主控制器,以便提交 Windows 硬件认证。

USB 的其他资源

  • 官方 USB 规范:提供 USB 协议的完整技术详细信息。

  • Microsoft Windows USB Core 团队博客:查看 Microsoft USB 团队撰写的文章。 此博客重点介绍 Windows USB 驱动程序堆栈,该堆栈适用于 Windows 电脑中的各种 USB 主控制器和 USB 集线器。 USB 客户端驱动程序开发人员和 USB 硬件设计人员的有用资源,用于了解驱动程序堆栈实现、解决常见问题,并说明如何使用工具收集跟踪和日志文件。

  • OSR Online 列表 - ntdev:由 OSR Online 为内核模式驱动程序开发人员管理的讨论列表。

  • Windows 硬件开发人员中心:基于开发人员提出的常见问题的其他资源,开发人员不熟悉开发适用于 Windows 操作系统的 USB 设备和驱动程序。

适合学习的 USB 硬件

  • MUTT 设备:MUTT 和 SuperMUTT 设备以及随附的软件包集成到 HCK USB 测试套件中。 它们提供的自动化测试可以在 USB 控制器、设备和系统的开发周期中使用,尤其是在进行压力测试时使用。

  • OSR USB FX2 学习工具包:如果你不熟悉 USB 驱动程序开发。 此工具包最适合学习本文档集中包括的 USB 示例。 可以从 OSR Online 商店获取学习工具包。

了解 Microsoft 提供的 USB 驱动程序

  • Windows 中的 USB 设备端驱动程序:介绍 USB 功能堆栈的体系结构。

  • Windows 中的 USB 主机端驱动程序:概述通用串行总线 (USB) 驱动程序堆栈体系结构。 Microsoft 提供驱动程序的核心堆栈,这些驱动程序可以与连接到 EHCI 和 xHCI 控制器的设备互操作。

  • USB-IF 设备类驱动程序:列出 Microsoft 为支持的 USB 设备类提供的驱动程序。 Windows 为许多经 USB-IF 批准的设备类、音频、大容量存储等提供随机设备类驱动程序。

  • USB 泛型函数驱动程序 – WinUSB:WinUSB 是 USB 设备的通用驱动程序,自 Windows Vista 起的所有 Windows 版本都附带此驱动程序。 Windows 提供的 Winusb.sys 可以作为自定义设备的功能驱动程序加载,以及作为复合设备的函数加载。

  • 复合设备的 USB 通用父驱动程序 – Usbccgp:具有多个功能的 USB 设备的父驱动程序。 Usbccgp 为每个这样的功能创建物理设备对象 (PDO)。 这些单独的 PDO 由各自的 USB 功能驱动程序管理,这些驱动程序可以是 Winusb.sys 驱动程序,也可以是 USB 设备类驱动程序。