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.
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.