Makro IoAcquireRemoveLock (wdm.h)

Rutinitas IoAcquireRemoveLock menaikkan jumlah untuk kunci hapus, menunjukkan bahwa objek perangkat terkait tidak boleh dilepas dari tumpukan perangkat atau dihapus.

Sintaks

NTSTATUS
IoAcquireRemoveLock (
    _Inout_ PIO_REMOVE_LOCK RemoveLock,
    _In_opt_ PVOID          Tag
    );

Parameter

[in] RemoveLock

Penunjuk ke struktur IO_REMOVE_LOCK yang diinisialisasi pemanggil dengan panggilan sebelumnya ke IoInitializeRemoveLock.

[in, optional] Tag

Secara opsional menunjuk ke tag yang disediakan penelepon yang mengidentifikasi instans ini untuk memperoleh kunci hapus. Misalnya, rutinitas Pengiriman driver biasanya mengatur parameter ini ke pointer ke IRP yang diproses oleh rutinitas.

Jika driver menentukan Tag pada panggilan ke IoAcquireRemoveLock, driver harus menyediakan Tag yang sama dalam panggilan yang sesuai ke IoReleaseRemoveLock.

Tag tidak harus unik, tetapi harus menjadi sesuatu yang bermakna selama debugging.

Nilai kembali

Tidak ada

Keterangan

Makro IoAcquireRemoveLock membungkus dan mengasumsikan nilai pengembalian IoAcquireRemoveLockEx, yang mengembalikan NTSTATUS:

Mengembalikan nilai Deskripsi
STATUS_SUCCESS Menunjukkan bahwa panggilan berhasil.
STATUS_DELETE_PENDING Nilai kesalahan yang menunjukkan driver telah menerima IRP_MN_REMOVE_DEVICE untuk perangkat dan telah memanggil IoReleaseRemoveLockandWait. Rutinitas itu menunggu semua kunci hapus untuk dihapus sebelum mengembalikan kontrol ke driver.

Jika rutin mengembalikan nilai apa pun selain STATUS_SUCCESS, jangan memulai operasi baru apa pun di perangkat.

Driver harus menginisialisasi hapus kunci dengan panggilan ke IoInitializeRemoveLock sebelum menggunakan kunci.

Driver harus memanggil IoReleaseRemoveLock untuk melepaskan kunci saat tidak lagi diperlukan.

Untuk informasi selengkapnya, lihat Menggunakan Hapus Kunci.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI CompleteRequestStatusCheck(wdm), MarkDevicePower(wdm), MarkPower(wdm), MarkPowerDown(wdm), MarkQueryRelations(wdm), MarkStartDevice(wdm), MultRemoveLock(wdm), NsRemoveLockMnRemove(wdm), NsRemoveLockMnSurpriseRemove(wdm), NsRemoveLockQueryMnRemove(wdm), PowerDownAllocate(wdm), PowerDownFail(wdm), PowerUpFail(wdm), RemoveLock(wdm) , RemoveLockCheck(wdm), RemoveLockForward(wdm), RemoveLockForward2(wdm), RemoveLockForwardDeviceControl(wdm), RemoveLockForwardDeviceControl2(wdm), RemoveLockForwardDeviceControlInternal(wdm), RemoveLockForwardDeviceControlInternal2(wdm), RemoveLockForwardRead(wdm), RemoveLockForwardRead2(wdm), RemoveLockForwardWrite(wdm), RemoveLockForwardWrite2(wdm), RemoveLockMnRemove(wdm), RemoveLockMnRemove2(wdm), RemoveLockMnSurpriseRemove(wdm), RemoveLockQueryMnRemove(wdm), RemoveLockRelease2(wdm), RemoveLockReleaseCleanup(wdm), RemoveLockReleaseClose(wdm), RemoveLockReleaseCreate(wdm), RemoveLockReleaseDeviceControl(wdm), RemoveLockReleaseInternalDeviceControl(wdm), RemoveLockReleasePnp(wdm), RemoveLockReleasePower(wdm), RemoveLockReleaseRead(wdm), RemoveLockReleaseShutdown(wdm), RemoveLockReleaseSystemControl(wdm), RemoveLockReleaseWrite(wdm), WmiForward(wdm)

Lihat juga

IoInitializeRemoveLock

IoReleaseRemoveLock

IoReleaseRemoveLockAndWait