为 USB 主控制器开发 Windows 驱动程序的概述

用途

本部分介绍 Windows 操作系统中的支持,用于开发 (USB) 主机控制器驱动程序的通用串行总线,该驱动程序与 Microsoft 提供的 usb 主机控制器扩展 (UCX) 进行通信。

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

USB 主控制器扩展 (UCX)

USB 主机控制器扩展是系统提供的驱动程序 (Ucx01000.sys) 。 此驱动程序通过使用Windows driver framework编程接口实现为框架类扩展。 主机控制器驱动程序充当该类扩展的客户端驱动程序。 当主机控制器驱动程序处理硬件操作和事件、电源管理和 PnP 事件时,UCX 充当抽象接口,该接口将请求发送到主机控制器驱动程序,并执行其他任务。

UCX 是Windows 中的一个 USB 主机端驱动程序。 它作为主机控制器设备堆栈中的 FDO 加载。

USB 主机控制器驱动程序

UCX 是可扩展的,旨在支持各种主机控制器驱动程序。 Windows 提供了以 USB xHCI 主机控制器为目标的 xHCI 驱动程序 (Usbxhci.sys) 。

主机控制器驱动程序是 UCX 的客户端,作为 内核模式驱动程序框架 写入 (KMDF) 驱动程序。

Microsoft 提供的二进制文件

若要编写主机控制器驱动程序,需要 UCX (Ucx01000.sys) 和存根库 (Ucx01000) 。 存根库位于 Windows 驱动程序包 (WDK) 中。 库执行两个主要功能。

  • 转换主机控制器驱动程序发出的调用,并将其传递给 UCX。
  • 为版本控制提供支持。 仅当 UCX 与主机控制器驱动程序的主版本号相同,并且主机控制器驱动程序的版本号相同或更高时,主机控制器驱动程序才能使用 UCX。

开发工具

WDK 包含驱动程序开发所需的资源,如标头、库、工具和示例。

下载适用于 Windows 的工具包和工具

开始 .。。

阅读用于描述体系结构 (设备、主机控制器和中心) 的不同组件的预期行为的官方规范。

适用于通用串行总线的 xHCI:规范官方通用串行总线文档

了解 UCX 的体系结构

熟悉 Microsoft 提供的 USB 驱动程序堆栈:

Windows 体系结构中的 usb 主机端驱动程序: usb 主机控制器扩展 (UCX)

熟悉 UCX 对象和句柄

UCX 扩展了 WDF 对象功能,以定义其自己的特定于 USB 的 UCX 对象。 有关 WDF 对象的更多详细信息,请参阅 框架对象简介

对于对任何底层主机控制器驱动程序的请求排队,UCX 将使用这些对象。 有关详细信息,请参阅 UCX 对象和主机控制器驱动程序使用的句柄

主机控制器对象 (UCXCONTROLLER)

表示主机控制器驱动程序创建的主控制器。 驱动程序必须为每个主机控制器实例仅创建一个主机控制器对象。 通常通过调用UcxControllerCreate方法在EVT_WDF_DRIVER_DEVICE_ADD回调中创建。

根中心对象 (UCXROOTHUB)

获取和控制主机控制器的根端口的状态。 通常通过调用UcxRootHubCreate方法,由主机控制器驱动程序在EVT_WDF_DRIVER_DEVICE_ADD回调中创建。

USB 设备对象 (UCXUSBDEVICE)

表示连接到总线的物理 USB 设备。 通常通过调用UcxUsbDeviceCreate方法,由主机控制器驱动程序在EVT_UCX_CONTROLLER_USBDEVICE_ADD回调中创建。

终结点对象 (UCXENDPOINT)

表示 USB 设备对象上的终结点。 由主机控制器驱动程序通常在EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD内创建,或通过调用UcxEndpointCreate方法EVT_UCX_USBDEVICE_ENDPOINT_ADD回调。

Stream 对象 (UCXSTREAMS)

跨单个大容量终结点表示设备的多个管道。 通常通过调用UcxStaticStreamsCreate方法,由主机控制器驱动程序在EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD回调中创建。

文档部分

主机控制器驱动程序的根中心回调函数

UCX 处理与根集线器相关的大多数操作。 这允许 USB 集线器驱动程序与根集线器交互,其方式与与常规中心交互的方式相同。 主机控制器驱动程序可以注册它的回调函数。

处理 USB 主控制器驱动程序中的 I/O 请求

UCX 会审传入 USB 请求块 (URBs) ,然后将其转发到正确的终结点队列。

在主机控制器驱动程序中配置 USB 端点

主机控制器驱动程序在 UCX 管理与终结点关联的队列以及将终结点编程到控制器硬件中扮演着一个角色。

USB 主控制器扩展 (UCX) 参考

提供客户端驱动程序使用的 i/o 请求、支持例程、结构和接口的规范。 这些例程和相关的数据结构在 WDK 头文件中定义。

UCX 称为 框架类扩展

主机控制器驱动程序称为 " 客户端驱动程序"。

通用串行总线 (USB)