Aturan SpinLock (wdm)
Aturan SpinLock menentukan bahwa, setelah memanggil KeAcquireSpinLock, driver memanggil KeReleaseSpinLock sebelum panggilan berikutnya ke KeAcquireSpinLock atau ke KeAcquireSpinLockRaiseToDpc.
Panggilan berlapis diizinkan jika mereka memperoleh dan melepaskan kunci untuk sumber daya yang berbeda. Panggilan berlapis untuk memperoleh atau melepaskan kunci untuk sumber daya yang sama melanggar aturan ini.
Aturan ini juga menentukan bahwa driver telah menggunakan KeReleaseSpinLock untuk melepaskan semua kunci putaran sebelum rutinitas pengiriman atau pembatalan rutin berakhir.
Model driver: WDM
Pemeriksaan bug ditemukan dengan aturan ini: Pemeriksaan Bug 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x00040009)
Cara menguji
Pada waktu kompilasi |
---|
Jalankan Pemverifikasi Driver Statis dan tentukan aturan SpinLock . Gunakan langkah-langkah berikut untuk menjalankan analisis kode Anda:
Untuk informasi selengkapnya, lihat Menggunakan Pemverifikasi Driver Statis untuk Menemukan Cacat pada Driver. |
Pada durasi |
---|
Jalankan Pemverifikasi Driver dan pilih opsi pemeriksaan kepatuhan DDI . |
Berlaku untuk
KeAcquireSpinLockKeAcquireSpinLockRaiseToDpcKeReleaseSpinLockKeTryToAcquireSpinLockAtDpcLevel