框架对象简介
Windows 驱动程序框架 (WDF) 提供给驱动程序的接口是基于对象的。 框架定义多个对象。 这些对象导出 方法 (函数) 和 属性 (驱动程序可以访问的数据) 。 框架对象还会启动 事件,驱动程序可以通过提供事件回调函数来支持这些事件。
基于框架的驱动程序永远不会直接访问框架对象。 相反,驱动程序按 句柄引用对象,驱动程序将其作为输入传递给对象方法。
所有框架对象具有以下特征:
引用计数
框架维护对每个对象的引用数。 当框架创建对象时,它将对象的引用计数设置为 1。 当框架使用完对象后,它会递减引用计数。 在引用计数减为零之前,框架无法删除对象,因此驱动程序可以通过递增对象的引用计数来阻止删除该对象。
上下文空间
基于框架的驱动程序可以为驱动程序接收或创建的每个框架对象创建特定于对象的上下文空间。 驱动程序应将所有特定于对象的数据存储在对象的上下文空间中。 有关上下文空间的详细信息,请参阅 框架对象上下文空间。
删除回调函数
驱动程序可以注册框架在删除对象时调用的回调函数。 回调函数可以删除驱动程序分配的资源,例如特定于对象的内存分配。 有关这些回调函数的详细信息,请参阅 框架对象生命周期。
父对象
所有框架对象都可以具有父对象。 框架为大多数对象指定默认父对象。 当驱动程序创建对象时,它可以指定替代该对象的默认父对象的父对象。 若要指定对象的父对象,驱动程序设置对象的WDF_OBJECT_ATTRIBUTES结构的 ParentObject 成员。 (对于少数对象类型,驱动程序无法替代默认的父对象。) 框架或驱动程序删除父对象时,框架也会删除父对象的子对象。
有关 WDF 定义的所有对象的概述,请参阅 Framework 对象的摘要。