Fungsi ObDereferenceObjectDeferDelete (wdm.h)

ObDereferenceObjectDeferDelete secara rutin mengurangi jumlah referensi untuk objek yang diberikan, memeriksa retensi objek, dan menghindari kebuntuan.

Sintaks

void ObDereferenceObjectDeferDelete(
  [in] PVOID Object
);

Parameter

[in] Object

Penunjuk ke isi objek.

Nilai kembali

Tidak ada

Keterangan

ObDereferenceObjectDeferDelete mirip dengan ObDereferenceObject kecuali itu, ketika jumlah referensi objek mencapai nol, manajer objek meneruskan permintaan penghapusan objek ke utas pekerja. Oleh karena itu, penghapusan kemudian terjadi pada IRQL = PASSIVE_LEVEL.

Gunakan ObDereferenceObjectDeferDelete untuk objek apa pun ketika penghapusan segera oleh utas objek saat ini (dengan menggunakan ObDereferenceObject) dapat mengakibatkan kebuntuan.

Misalnya, kebuntuan seperti itu dapat terjadi jika ObDereferenceObject digunakan untuk mendereferensikan objek Kernel Transaction Manager (KTM) ketika driver tingkat yang lebih tinggi pada tumpukan driver memegang kunci.

Untuk menghindari kebuntuan tersebut, gunakan ObDereferenceObjectDeferDelete alih-alih ObDereferenceObject untuk mendereferensikan objek KTM.

Untuk informasi tentang permanen objek dan atribut, lihat ObDereferenceObject.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header wdm.h (termasuk Fltkernel.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL

Lihat juga

ObDereferenceObject

ObReferenceObject