通过 USB I/O 目标创建文件

警告

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 目标会创建堆栈内文件对象,该对象表示 USB I/O 目标保持打开的默认会话。 有关堆栈内文件对象的详细信息,请参阅 创建文件对象以处理 I/O。 USB I/O 目标或其 USB 管道目标子项使用此文件对象发送它们源自的任何 I/O (例如 I/O 以获取 USB 配置描述符) 。

驱动程序可以在格式函数中使用此堆栈内文件对象 (例如,如果驱动程序必须在此文件对象的默认会话上发送 I/O,则可以在调用 IWDFIoTarget::FormatRequestForRead) 方法时,将指向此文件对象的指针传递给 pFile 参数。 若要获取堆栈内文件对象,驱动程序可以调用 IWDFIoTarget::GetTargetFile 方法。

当显式释放 I/O 目标时,当驱动程序在 I/O 目标上调用 IWDFObject::D eleteWdfObject 方法时,或隐式释放 I/O 目标的父级时,将关闭此堆栈内文件对象。

如果在删除设备时此堆栈内文件对象上有任何 I/O 仍然未完成,则此文件对象将无法关闭,UMDF 将生成驱动程序停止。 有关详细信息,请参阅 创建和使用 Driver-Created 文件对象