警告
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 操作(例如,用于获取 USB 配置描述符的 I/O)。
如果驱动程序必须在此文件对象的默认会话上发送 I/O,驱动程序可以在调用 IWDFIoTarget::FormatRequestForRead 方法时使用此堆栈内文件对象(例如,驱动程序可以将指向此文件对象的指针传递给 pFile 参数)。 若要获取堆栈内文件对象,驱动程序可以调用 IWDFIoTarget::GetTargetFile 方法。
当驱动程序在 I/O 目标上调用 IWDFObject::DeleteWdfObject 方法时,该栈内文件对象会显式关闭;当 I/O 目标的父对象被释放时,该文件对象将被隐式关闭。
如果在删除设备时此堆栈内文件对象上存在任何 I/O 未完成,则此文件对象将无法关闭,UMDF 将生成驱动程序停止。 有关详细信息,请参阅 创建和使用 Driver-Created 文件对象。