框架对象层次结构

警告

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

下图显示了父子框架对象层次结构。

umdf 父子对象层次结构。

框架对象的生存期范围取决于它们在层次结构中的位置以及对象的创建方式。 框架对象的生存期范围分为以下类别之一:

  • 框架控制对象的创建和销毁。

    框架创建和销毁对象,例如驱动程序对象和设备对象,以响应系统事件。 当用户模式驱动程序调用 IWDFDriver::CreateDevice 方法来创建设备对象时,驱动程序可以选择注册,以在销毁设备对象之前由框架通知。

  • 框架创建 对象;但是,驱动程序控制何时释放对象。

    向驱动程序显示 I/O 时,I/O 请求对象遵循此模式。 框架创建请求对象,请求对象的生存期在驱动程序调用 IWDFIoRequest::Complete 方法之前有效。

  • 驱动程序创建 对象并将 对象与另一个框架对象相关联。

    某些框架对象由父框架对象实例公开的方法创建,这些对象将关联到这些对象以进行生存期管理。 IWDFDevice::CreateIoQueue 方法是此模式的一个示例。 如果成功调用 IWDFDevice::CreateIoQueue ,则新创建的 I/O 队列与 IWDFDevice 接口表示的设备实例相关联。 销毁父对象时,框架会自动清理子实例。 如果驱动程序向框架注册适当的回调函数,则会通知驱动程序这些事件。