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

本文介绍 Windows 操作系统中对开发通用串行总线 (USB) 功能控制器驱动程序的支持,该驱动程序与 Microsoft 提供的 USB 功能控制器扩展 (UFX) 进行通信。

开发工具和 Microsoft 提供的二进制文件

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

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

Windows 为 Synopsys IP 的控制器硬件提供内置 USB 功能控制器驱动程序,例如 UfxSynopsys.sys。 它们通常需要平台级别的更改和验证,这些更改和验证通常由硬件合作伙伴或 OEM 在启动平台时执行。 此启动过程可能包括与 ACPI 集成,以通知系统驱动程序 USB 附加/分离事件,以及使用 Microsoft 提供的 HLK 测试执行其他验证。 若要编写自己的控制器驱动程序,需要:

  • UFX (Ufx01000.sys) 作为 FDO 加载。 此驱动程序包含在 Windows 中。
  • 链接到 Ufx01000.lib) (存根库。 存根库位于 WDK 中。 库转换由函数控制器驱动程序发出的调用,并将其传递到 UFX。
  • 包括 WDK 中提供的 Ufxclient.h。

若要从用户模式发送请求,需要:

  • GenericUSBFn.sys 作为 USB 函数类驱动程序加载。 此驱动程序包含在 Windows 中。
  • 包括 WDK 中提供的 Genericusbfnioctl.h。

若要从 USB 类驱动程序发送请求,需要:

  • UFX (Ufx01000.sys) 作为 FDO 加载。 此驱动程序包含在 Windows 中。
  • 包括 WDK 中提供的 Usbfnioctl.h。

若要编写处理通过专有充电器充电的筛选器驱动程序,需要:

  • UfxChipidea.sys 或 Ufxsynopsys.sys 作为客户端驱动程序加载到 UFX。
  • 包括 WDK 中提供的 Ufxproprietarycharger.h。

UFX 的体系结构

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

Windows 中的 USB 设备端驱动程序

熟悉 UFX 对象和句柄

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

对于队列请求,UFX 使用特定于 USB 的对象。 有关详细信息,请参阅 USB 函数客户端驱动程序使用的 UFX 对象和句柄

编写函数控制器客户端驱动程序

了解 UFX 的行为、它如何与客户端驱动程序交互,以及客户端驱动程序应实现的功能。

函数控制器客户端驱动程序的任务

编程参考部分

UFX 编程参考的 USB 函数类驱动程序

USB 功能控制器客户端驱动程序编程参考

用于支持专有充电器的 USB 筛选器驱动程序