使用常规框架对象
常规框架对象是派生所有其他类型的框架对象的框架对象。
与其他框架对象一样,常规对象支持引用计数、上下文空间、删除回调函数和父对象,如 框架对象简介中所述。
驱动程序可以创建和使用常规框架对象。 如果驱动程序调用 WdfObjectCreate 来创建常规对象,驱动程序可以:
为每个常规对象创建一个或多个上下文空间。
可以使用对象上下文空间来存储要与常规对象关联的系统资源的相关信息。
有关上下文空间的详细信息,请参阅 框架对象上下文空间。
将父对象分配给常规对象。
删除父对象时,将删除常规对象。 例如,如果驱动程序将框架设备对象指定为其一个常规对象的父对象,则框架将在删除设备对象时删除常规对象。
驱动程序通过设置对象的WDF_OBJECT_ATTRIBUTES结构的ParentObject 成员来指定对象的父对象。
提供删除回调函数。
驱动程序可以提供 EvtCleanupCallback 和 EvtDestroyCallback 函数,这些函数可以解除分配驱动程序在创建常规对象时分配的系统资源。 例如,如果驱动程序在创建常规对象时调用 了 ExAllocatePool ,则清理或销毁回调函数可以调用 ExFreePool。
使用常规对象是管理驱动程序分配的资源的便捷方法。 例如,如果驱动程序将请求发送到多个设备或将请求拆分为多个较小的设备,则较高级别的驱动程序可能需要多个内存分配来处理收到的 I/O 请求。 驱动程序可以创建一个或多个常规对象,这些对象是接收的 I/O 请求的子级,并且可以在常规对象的上下文空间中存储有关内存分配的信息。