特定于 USB 的 UMDF 1.x 接口

警告

UMDF 2 是 UMDF 的最新版本,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 不会向 UMDF 1 添加任何新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。

存档的 UMDF 1 示例可在 Windows 11 版本 22H2 - 2022 年 5 月驱动程序示例更新中找到。

有关详细信息,请参阅使用 UMDF 入门

USB 设备可以有一个或多个配置。 每个配置可以有一个或多个接口。 每个接口都与一个或多个备用设置相关联,每个备用设置定义一个或多个终结点。 终结点表示设备硬件上的缓冲区。

管道是主机控制器与当前备用设置中的终结点之间的连接的软件抽象。 管道可以是 I/O 的目标,并且由 IWDFUsbTargetPipe 接口在 UMDF 中公开。

特定于 USB 的 UMDF 接口基于 WinUSB 体系结构构建。 根据设计,WinUSB 仅允许访问多个配置设备的第一个配置。 因此,WinUSB 接口不会公开提交选择配置请求的功能。 因此,UMDF 中的 I/O 目标功能不支持选择除第一个配置以外的任何设备配置。

特定于 USB 的 UMDF 接口具有类似于常规 USB 模型的对象层次结构。 UMDF 驱动程序创建一个目标设备对象,该对象由 IWDFUsbTargetDevice 接口公开。 然后,驱动程序可以使用 IWDFUsbTargetDevice 的方法访问由 IWDFUsbInterface 实例公开的 USB 接口。 驱动程序可以调用 IWDFUsbInterface 方法来操作设置和终结点。

下表显示了 USB 特定的 UMDF 接口层次结构:

USB 特定的 UMDF 接口 派生
IWDFUsbTargetDevice IWDFIoTarget
IWDFUsbInterface IWDFObject
IWDFUsbTargetPipe IWDFIoTarget

IWDFUsbTargetDeviceIWDFUsbTargetPipe 接口派生自 IWDFIoTarget 接口,因此公开 I/O 目标对象。 IWDFUsbInterface 接口不派生自 IWDFIoTarget (IWDFUsbInterface 派生自 IWDFObject 接口) ,因此不会公开 I/O 目标对象。 发送用于发现和操作接口详细信息的任何 I/O 都发送到目标设备。

有关编写基于 UMDF 的简单 USB 客户端驱动程序的分步说明,请参阅 如何 (UMDF) 编写第一个 USB 客户端驱动程序

若要了解基于 UMDF 的 USB 客户端驱动程序所需的源代码,请参阅 了解 (UMDF) 的 USB 客户端驱动程序代码结构