Makro IoInitializeRemoveLock (wdm.h)

Rutinitas IoInitializeRemoveLock menginisialisasi kunci hapus untuk objek perangkat.

Sintaks

void IoInitializeRemoveLock(
  [in]  Lock,
  [in]  Tag,
  [in]  Maxmin,
  [in]  HighWater
);

Parameter

[in] Lock

Penunjuk ke struktur IO_REMOVE_LOCK yang disediakan penelepon yang diinisialisasi rutinitas ini dengan informasi tentang kunci, termasuk penghitung dan peristiwa sinkronisasi. Penulis driver harus mengalokasikan struktur ini sebagai bagian dari ekstensi perangkat objek perangkat.

[in] Tag

Menentukan tag untuk mengidentifikasi pembuat kunci. Penulis driver biasanya menggunakan string 4 karakter, yang ditentukan dalam urutan terbalik, seperti tag yang digunakan untuk ExAllocatePoolWithTag.

Sistem I/O menggunakan parameter ini jika Pemverifikasi Driver diaktifkan. Pemanggil harus selalu menyediakan nilai tag bukan nol untuk parameter ini.

[in] Maxmin

Menentukan jumlah menit maksimum kunci ini harus ditahan. Nilai nol berarti tidak ada batasan. Nilai ini biasanya digunakan selama penelusuran kesalahan untuk mengidentifikasi rutinitas driver yang menahan kunci lebih lama dari yang diharapkan.

Sistem I/O menggunakan parameter ini jika Pemverifikasi Driver diaktifkan.

[in] HighWater

Menentukan jumlah maksimum akuisisi terutang yang diizinkan pada kunci. Gunakan 0 untuk menentukan tidak ada maksimum. HighWatermark harus <= 0x7FFFFFFF.

Sistem I/O menggunakan parameter ini jika Pemverifikasi Driver diaktifkan.

Nilai kembali

Tidak ada

Keterangan

Driver dapat menggunakan kunci hapus untuk melacak operasi I/O yang luar biasa pada perangkat dan untuk menentukan kapan driver dapat menghapus objek perangkatnya sebagai respons terhadap permintaan IRP_MN_REMOVE_DEVICE .

Sebelum memanggil IoInitializeRemoveLock, driver harus mengalokasikan struktur IO_REMOVE_LOCK dalam ekstensi perangkatnya. Driver biasanya memanggil IoInitializeRemoveLock dalam rutinitas AddDevice-nya , ketika driver menginisialisasi ekstensi perangkat lainnya untuk objek perangkat.

Setelah rutinitas IoReleaseRemoveLockAndWait kembali, driver harus mempertimbangkan perangkat berada dalam keadaan di mana perangkat siap untuk dihapus dan tidak dapat melakukan operasi I/O. Oleh karena itu, driver tidak boleh memanggil IoInitializeRemoveLock untuk menginisialisasi ulang kunci hapus. Pelanggaran aturan ini saat driver sedang diverifikasi oleh Driver Verifier akan mengakibatkan pemeriksaan bug.

Karena driver menyimpan struktur IO_REMOVE_LOCK dalam ekstensi perangkat objek perangkat, kunci hapus dihapus ketika driver menghapus ekstensi perangkat sebagai bagian dari pemrosesan permintaan IRP_MN_REMOVE_DEVICE .

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 PASSIVE_LEVEL

Lihat juga

IoAcquireRemoveLock

IoInitializeRemoveLock

IoReleaseRemoveLock

IoReleaseRemoveLockAndWait