框架文件对象

警告

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 入门

框架文件对象通过 IWDFFile 接口向驱动程序公开。 它是已打开设备的框架表示形式。 当应用程序通过 Microsoft Win32 CreateFile 函数打开设备时,框架会创建一个文件对象来表示打开的设备实例。 因此,框架文件对象在概念上等效于从应用程序对 CreateFile 的调用返回的 Win32 句柄。 框架可以创建多个与单个设备关联的文件对象。 每次成功调用 CreateFile 时,都会创建每个文件对象。 所有 I/O 操作(如读取和写入)都针对特定的文件对象实例。

注意 传递给 UMDF 驱动程序的所有请求都与文件对象相关联。 但是,传递给 WDMKMDF 驱动程序的请求有时与文件对象不关联。

UMDF 驱动程序可以调用 IWDFIoRequest::GetFileObject 方法来获取与请求关联的文件对象。

当驱动程序调用 GetFileObject 时,框架会递增接口上的引用计数。 驱动程序负责在使用接口指针完成时释放引用。 为此,请使用智能指针,该指针在对象超出上下文时自动递减引用计数,或者在使用完对象后在接口上调用 Release 。 有关演示如何使用智能指针的代码示例,请参阅 GetFileObject