通用串行总线 (USB)
通用串行总线(USB)提供可扩展即插即用串行接口,可确保外围设备的标准低成本连接。 USB 设备包括键盘、鼠标、游戏杆、打印机、扫描仪、存储设备、调制解调器、视频会议摄像头等。
USB-IF 是一个特别兴趣组 (SIG),负责维护官方 USB 规范、测试规范和工具。
Windows 操作系统为 USB 主控制器、集线器以及符合官方 USB 规范的设备和系统提供本机支持。 Windows 还提供编程接口,用于开发可与 USB 设备通信的设备驱动程序和应用程序。
Windows 中的 USB
Windows 支持 USB 类型 C 连接器:对于想要使用 USB Type-C 连接器构建 Windows 系统的 OEM。
通用串行总线 4 (USB4™):为 OEM、IHV 和硅供应商提供支持 USB4 的 Windows 系统,并提供有关 USB4 连接管理器的信息、促进调试和启动过程。
USB 常见问题解答:驱动程序开发人员关于 USB 堆栈和 USB 中支持的功能的常见问题。
Microsoft USB 设备的 OS 描述符:Windows 定义 MS OS 描述符,以便在连接到运行 Windows 操作系统的系统时更好地枚举。
开发工具
USB 示例
创建适用于 Windows 的 USB 驱动程序或应用
USB 驱动程序开发简介。 介绍在为设备提供 USB 驱动程序时如何选择最适合的模型。
编写 USB 客户端驱动程序(KMDF、UMDF)
本部分包含有关如何使用 Visual Studio 随附的 USB Microsoft 模板编写第一个用户模式和内核模式 USB 驱动程序的教程。
- USB 客户端驱动程序开发入门
- USB device driver programming reference(USB 设备驱动程序编程参考)
编写 USB 主控制器驱动程序
如果要开发不符合规范或开发自定义非 xHCI 硬件(如虚拟主机控制器)的 xHCI 主机控制器,则可以编写与 UCX 通信的主机控制器驱动程序。 例如,可以考虑支持 USB 设备的无线坞。 电脑通过无线坞与 USB 设备通信,使用基于 TCP 的 USB 作为传输方式。
USB 主控制器 (UCX) 参考
为 USB 设备编写功能控制器驱动程序
可以开发控制器驱动程序,用于处理由主机发送到设备的所有 USB 数据传输内容和命令。 此驱动程序可以与 Microsoft 提供的 USB 功能控制器扩展 (UFX) 通信。
USB 函数类扩展 (UFX) 参考
编写 USB 类型 C 连接器驱动程序
Windows 10 引入了对新 USB 连接器的支持:USB 类型 C。 可以为与Microsoft提供的类扩展模块通信的连接器编写驱动程序:UcmCx 来处理与类型 C 连接器相关的方案,例如,哪些端口支持类型 C,哪些端口支持电源传递。
USB 连接器管理器类扩展 (UcmCx) 参考
编写 USB 双角色控制器驱动程序
Windows 10 现在支持 USB 双角色控制器。 Windows 包括适用于 ChipIdea 和 Synopsis 控制器的内置客户端驱动程序。 对于其他控制器,Microsoft 提供一组编程接口,方便双角色类扩展 (UrsCx) 及其客户端驱动程序互相通信,从而处理双角色控制器的角色切换功能。
有关此功能的详细信息,请参阅:
USB 双角色控制器驱动程序编程参考
编写用于模拟设备的 USB 驱动程序
可以开发模拟的通用串行总线(USB)主机控制器驱动程序和连接的虚拟 USB 设备。 这两个组件组合成单个 KMDF 驱动程序,该驱动程序可以与 Microsoft 提供的 USB 设备模拟类扩展 (UdeCx) 通信。
开发模拟 USB 设备 (UDE) 的 Windows 驱动程序
模拟 USB 主控制器驱动程序编程参考
适用于开发 USB 驱动程序的 WDF 扩展
- USB 连接器管理器类扩展 (UcmCx) 参考
- USB 主机控制器 (UCX) 参考
- USB 函数类扩展 (UFX) 参考
编写 UWP 应用
与 USB 设备通信,开始完成:提供有关在 UWP 应用中实现 USB 功能的分步说明。 若要为 USB 设备编写此类应用,需要 Visual Studio 和 Microsoft Windows 软件开发工具包(SDK)。
Windows.Devices.Usb:UWP 命名空间编程参考。
编写 Windows 桌面应用
编写 WinUSB 应用程序:描述应用程序如何调用 WinUSB Functions 来与 USB 设备通信。
WinUSB 函数
常见编程方案:驱动程序或应用为了与 USB 设备通信而执行的常见任务列表。 快速了解每个任务所需的编程接口。
通过 Windows 测试 USB 设备
Microsoft USB 测试工具 (MUTT) 设备的概述
获取相关工具的信息,这些工具可以用来测试 USB 硬件或软件、捕获操作和其他系统事件的跟踪,以及观察 USB 驱动程序堆栈如何响应客户端驱动程序或应用程序发送的请求。
阅读硬件认证工具包中提供的测试的概述。硬件供应商和设备制造商可以通过这些测试准备其 USB 设备和主控制器,以便提交 Windows 硬件认证。
通用串行总线 4 (USB4™)
通用串行总线 4 (USB4™):为 OEM、IHV 和硅供应商提供支持 USB4 的 Windows 系统,并提供有关 USB4 连接管理器的信息、促进调试和启动过程。
Windows 中的 USB4 连接管理器简介:USB4 域中的连接管理器负责 USB4 域的枚举、配置和管理。
通用串行总线 4 (USB4™) 设计详细信息和一般要求:高级设计和用户体验要求。
通用串行总线 4(USB4™)需要测试:HLK 要求不旨在为 USB4 功能集提供完整的端到端功能测试覆盖范围。 建议你对重要的使用方案进行全面验证。
USB 的其他资源
官方 USB 规范:提供 USB 协议的完整技术详细信息。
Microsoft Windows USB 核心团队博客:查看由 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 设备类驱动程序:列出支持的 USB 设备类的Microsoft提供的驱动程序。 Windows 为许多经 USB-IF 批准的设备类、音频、大容量存储等提供随机设备类驱动程序。
USB 泛型函数驱动程序 –WinUSB:WinUSB 是 USB 设备的通用驱动程序,自 Windows Vista 以来所有版本的 Windows 随附。 Windows 提供的 Winusb.sys 可以作为自定义设备的功能驱动程序加载,以及作为复合设备的函数加载。
复合设备的 USB 通用父驱动程序 – Usbccgp:具有多个功能的 USB 设备的父驱动程序。 Usbccgp 为每个这样的功能创建物理设备对象 (PDO)。 这些单独的 PDO 管理各自的 USB 功能驱动程序,可以是Winusb.sys驱动程序或 USB 设备类驱动程序。