Bagikan melalui


Aturan QueuedSpinLock (wdm)

Aturan QueuedSpinLock menentukan bahwa driver memanggil KeAcquireInStackQueuedSpinLock sebelum memanggil KeReleaseInStackQueuedSpinLock dan bahwa driver memanggil KeReleaseInStackQueuedSpinLock sebelum panggilan berikutnya ke KeAcquireInStackQueuedSpinLock.

Panggilan berlapis diizinkan jika mereka memperoleh dan merilis sumber daya yang berbeda. Panggilan berlapis untuk memperoleh atau merilis sumber daya yang sama melanggar aturan ini.

Aturan ini juga menentukan bahwa driver telah memanggil KeReleaseInStackQueuedSpinLock untuk melepaskan semua kunci putar antrean sebelum pengiriman rutin atau membatalkan rutinitas berakhir.

Model driver: WDM

Pemeriksaan bug ditemukan dengan aturan ini: Pemeriksaan Bug 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x00040006)

Cara menguji

Pada waktu kompilasi

Jalankan Pemverifikasi Driver Statis dan tentukan aturan QueuedSpinLock .

Gunakan langkah-langkah berikut untuk menjalankan analisis kode Anda:
  1. Siapkan kode Anda (gunakan deklarasi jenis peran).
  2. Jalankan Pemverifikasi Driver Statis.
  3. Lihat dan analisis hasilnya.

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

KeAcquireInStackQueuedSpinLockKeReleaseInStackQueuedSpinLock