为 USB 功能控制器开发 Windows 驱动程序的概述
本文介绍 Windows 操作系统中对开发通用串行总线 (USB) 功能控制器驱动程序的支持,该驱动程序与 Microsoft 提供的 USB 功能控制器扩展 (UFX) 进行通信。
开发工具和 Microsoft 提供的二进制文件
Windows 驱动程序工具包 (WDK) 包含开发驱动程序所需的资源,如头文件、库、工具和示例。
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 驱动程序堆栈:
熟悉 UFX 对象和句柄
UFX 扩展了 WDF 对象功能,以定义其自己的特定于 USB 的 UCX 对象。 有关 WDF 对象的更多详细信息,请参阅 框架对象简介。
对于队列请求,UFX 使用特定于 USB 的对象。 有关详细信息,请参阅 USB 函数客户端驱动程序使用的 UFX 对象和句柄。
编写函数控制器客户端驱动程序
了解 UFX 的行为、它如何与客户端驱动程序交互,以及客户端驱动程序应实现的功能。