特定于 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 |
IWDFUsbTargetDevice 和 IWDFUsbTargetPipe 接口派生自 IWDFIoTarget 接口,因此公开 I/O 目标对象。 IWDFUsbInterface 接口不派生自 IWDFIoTarget(IWDFUsbInterface 派生自 IWDFObject 接口),因此不会公开 I/O 目标对象。 发送到发现和操作接口详细信息的任何 I/O 将发送到目标设备。
有关编写基于 UMDF 的简单 USB 客户端驱动程序的分步说明,请参阅如何编写第一个 USB 客户端驱动程序(UMDF)。
若要了解基于 UMDF 的 USB 客户端驱动程序所需的源代码,请参阅了解 USB 客户端驱动程序代码结构(UMDF)。