ObDereferenceObjectDeferDelete 函式 (wdm.h)

ObDereferenceObjectDeferDelete 例程會遞減指定對象的參考計數、檢查物件保留期,並避免死結。

語法

void ObDereferenceObjectDeferDelete(
  [in] PVOID Object
);

參數

[in] Object

對象主體的指標。

傳回值

備註

ObDereferenceObjectDeferDelete 類似於 ObDereferenceObject ,不同之處在於,當對象的參考計數達到零時,物件管理員會將對象刪除要求傳遞給背景工作線程。 因此,稍後會在 IRQL = PASSIVE_LEVEL發生刪除。

使用 ObDereferenceObjectObjectDeferDelete 在物件目前線程 (立即刪除時,使用 ObDereferenceObject) 可能會導致死結。

例如,如果使用 ObDereferenceObject 來取值 核心交易管理員 , (KTM) 物件,當驅動程式堆棧上的較高層級驅動程式持有鎖定時,就會發生這類死結。

若要避免這類死結,請使用 ObDereferenceObjectDeferDelete 而不是 ObDereferenceObject 來取值 KTM 物件。

如需物件效能和屬性的相關信息,請參閱 ObDereferenceObject

規格需求

需求
目標平台 Universal
標頭 wdm.h (包含 Fltkernel.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL

另請參閱

ObDereferenceObject

ObReferenceObject