ObDereferenceObjectDeferDelete 函数 (wdm.h)

ObDereferenceObjectDeferDelete 例程可递减给定对象的引用计数、检查对象保留期并避免死锁。

语法

void ObDereferenceObjectDeferDelete(
  [in] PVOID Object
);

参数

[in] Object

指向对象主体的指针。

返回值

备注

ObDereferenceObjectDeferDelete 类似于 ObDereferenceObject ,不同之处在于,当对象的引用计数达到零时,对象管理器会将对象删除请求传递给工作线程。 因此,稍后会在 IRQL = PASSIVE_LEVEL 进行删除。

如果对象的当前线程使用 ObDereferenceObject) 立即删除对象 (,则对任何对象使用 ObDereferenceObjectDeferDelete 可能导致死锁。

例如,如果使用 ObDereferenceObject 取消引用 内核事务管理器 (KTM) 对象,则驱动程序堆栈上的较高级别驱动程序持有锁时,可能会出现此类死锁。

若要避免此类死锁,请使用 ObDereferenceObjectDeferDelete 而不是 ObDereferenceObject 取消引用 KTM 对象。

有关对象常量和属性的信息,请参阅 ObDereferenceObject

要求

要求
目标平台 通用
标头 wdm.h (包括 Fltkernel.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL

另请参阅

ObDereferenceObject

ObReferenceObject