Makro IoReleaseRemoveLock (wdm.h)

Rutinitas IoReleaseRemoveLock merilis kunci hapus yang diperoleh dengan panggilan sebelumnya ke IoAcquireRemoveLock.

Sintaks

void IoReleaseRemoveLock(
  [in]  RemoveLock,
  [in]  Tag
);

Parameter

[in] RemoveLock

Arahkan ke struktur IO_REMOVE_LOCK yang diteruskan pemanggil ke panggilan sebelumnya ke IoAcquireRemoveLock.

[in] Tag

Penunjuk ke tag yang disediakan penelepon yang diteruskan ke panggilan sebelumnya ke IoAcquireRemoveLock.

Jika driver menentukan Tag saat memperoleh kunci, driver harus menentukan Tag yang sama saat melepaskan kunci.

Jika panggilan ke IoAcquireRemoveLock tidak menentukan Tag, maka parameter ini adalah NULL.

Nilai kembali

Tidak ada

Keterangan

Driver memanggil IoReleaseRemoveLock ketika telah menyelesaikan operasi I/O yang disebut IoAcquireRemoveLock.

  • Untuk operasi I/O (termasuk runtime integrasi daya dan PnP) yang mengatur rutinitas IoCompletion , driver harus memanggil IoReleaseRemoveLock dalam rutinitas IoCompletion , setelah memanggil IoCompleteRequest.
  • Untuk operasi I/O yang tidak mengatur rutinitas IoCompletion , driver harus memanggil IoReleaseRemoveLock setelah meneruskan IRP saat ini ke driver yang lebih rendah berikutnya, tetapi sebelum keluar dari rutinitas pengiriman.
Setiap panggilan ke IoAcquireRemoveLock harus memiliki panggilan yang sesuai ke IoReleaseRemoveLock.

IoReleaseRemoveLock mengurangi jumlah akuisisi kunci hapus yang luar biasa. Jika hitungan masuk ke nol dan driver telah menerima permintaan IRP_MN_REMOVE_DEVICE , IoReleaseRemoveLock menetapkan peristiwa internal. Ketika driver siap untuk menghapus objek perangkat, driver memanggil rutinitas serupa, IoReleaseRemoveLockAndWait. Driver melakukan panggilan ini hanya dalam kode pengirimannya untuk permintaan IRP_MN_REMOVE_DEVICE . Rutinitas IoReleaseRemoveLockAndWait tidak kembali sampai IoReleaseRemoveLock mengatur peristiwa yang menunjukkan jumlah akuisisi adalah nol. Setelah IoReleaseRemoveLockAndWait kembali, driver dapat melepaskan dan menghapus objek perangkat dengan aman.

Untuk informasi selengkapnya, lihat Menggunakan Hapus Kunci.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
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 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)

Lihat juga

IoAcquireRemoveLock

IoInitializeRemoveLock

IoReleaseRemoveLockAndWait