在 UMDF 1.x 驱动程序中使用 USB 接口

警告

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 接口表示为框架 USB 接口对象。 当 UMDF 驱动程序创建框架 USB 设备对象时,框架会为设备支持的每个 USB 接口创建框架 USB 接口对象。

大多数 USB 设备只有一个接口,并且接口只有一个备用设置。 此类设备的驱动程序通常不需要使用框架的 USB 接口对象定义的对象方法。

如果 UMDF 驱动程序支持提供多个接口或备用设置的 USB 设备,则接口对象方法使驱动程序能够:

获取 UMDF-USB 接口信息

UMDF 驱动程序调用 IWDFUsbTargetFactory::CreateUsbTargetDevice 方法来创建 UMDF-USB 目标设备对象后,驱动程序可以调用 IWDFUsbTargetDevice::GetNumInterfaces 方法以获取设备支持的 USB 接口数。 接下来,驱动程序可以调用 IWDFUsbTargetDevice::RetrieveUsbInterface 方法,以获取指向 IWDFUsbInterface 接口的指针,该接口公开设备支持的 USB 接口。 然后,驱动程序可以调用每个 USB 接口对象为获取有关 USB 接口的信息而定义的以下方法:

IWDFUsbInterface::GetInterfaceNumber
获取与 USB 接口对象关联的 USB 接口编号。

IWDFUsbInterface::GetInterfaceDescriptor
获取与 USB 接口的备用设置之一关联的 USB 接口描述符。

IWDFUsbInterface::GetNumEndPoints
获取 (也称为管道) 与 USB 接口的备用设置之一关联的终结点数。

IWDFUsbInterface::GetConfiguredSettingIndex
获取一个索引值,该值标识当前为 USB 接口选择的备用设置。

IWDFUsbInterface::RetrieveUsbPipeObject
检索指向 IWDFUsbTargetPipe 接口的指针,该接口公开与指定的 USB 设备接口和管道索引关联的框架管道对象。

IWDFUsbInterface::GetWinUsbHandle
获取与 USB 接口关联的 WinUsb 接口句柄。

为 UMDF-USB 接口选择备用设置

UMDF 驱动程序可以调用 IWDFUsbInterface::SelectSetting 方法,为设备支持的 USB 接口之一选择备用设置。

设备的备用设置必须连续编号,从零开始。

重要 选择设置会使有关接口和终结点的任何信息失效。 因此,驱动程序应再次获取此信息。 驱动程序还必须放弃之前检索到的任何 USB 管道对象并重新创建它们。