Bagikan melalui


Mengunci seperangkat aturan (WDM)

Gunakan aturan ini untuk memverifikasi bahwa driver Anda mengelola sumber daya bersama dengan benar.

Di bagian ini

Topik Deskripsi

CancelSpinLock

Aturan CancelSpinLock menentukan bahwa driver memanggil IoAcquireCancelSpinLock sebelum memanggil IoReleaseCancelSpinLock dan bahwa driver memanggil IoReleaseCancelSpinLock sebelum panggilan berikutnya ke IoAcquireCancelSpinLock.

CancelSpinlockRelease

Aturan CancelSpinlockRelease menentukan bahwa panggilan ke IoAcquireCancelSpinLock dan IoReleaseCancelSpinLock digunakan dalam perubahan ketat. Artinya, setiap panggilan ke IoAcquireCancelSpinLock harus memiliki panggilan yang sesuai ke IoReleaseCancelSpinLock.

CriticalRegions

Aturan CriticalRegions menentukan bahwa driver harus memanggil KeEnterCriticalRegion sebelum memanggil KeLeaveCriticalRegion dan bahwa driver memanggil KeLeaveCriticalRegion sebelum panggilan berikutnya ke KeEnterCriticalRegion. (Panggilan berlapis diizinkan.)

ExclusiveResourceAccess

Aturan ExclusiveResourceAccess menentukan bahwa driver memanggil ExAcquireResourceExclusiveLite sebelum memanggil ExReleaseResourceLite atau ExReleaseResourceForThreadLite dan menentukan bahwa driver memanggil ExReleaseResourceLite atau ExReleaseResourceForThreadLite sebelum panggilan berikutnya ke ExAcquireResourceExclusiveLite.

GuardedRegions

Aturan GuardedRegions memverifikasi bahwa panggilan ke KeEnterGuardedRegion dan KeLeaveGuardedRegion digunakan dalam perubahan ketat.

QueuedSpinLock

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

QueuedSpinLockRelease

Aturan QueuedSpinLockRelease menentukan bahwa panggilan ke KeAcquireInStackQueuedSpinLock dan KeReleaseInStackQueuedSpinLock digunakan dalam alternasi ketat.

SpinLock

Aturan SpinLock menentukan bahwa, setelah memanggil KeAcquireSpinLock, driver memanggil KeReleaseSpinLock sebelum panggilan berikutnya ke KeAcquireSpinLock atau ke KeAcquireSpinLockRaiseToDpc.

SpinLockDpc

Aturan SpinLockDpc menentukan bahwa panggilan ke KeAcquireSpinLock atau KeAcquireSpinLockRaiseToDpc dan KeReleaseSpinLock harus dilakukan secara bergantian yang ketat. Artinya, setelah memanggil KeAcquireSpinLock atau KeAcquireSpinLockRaiseToDpc, driver harus memanggil KeReleaseSpinLock sebelum panggilan berikutnya ke KeAcquireSpinLock atau ke KeAcquireSpinLockRaiseToDpc.

SpinlockRelease

Aturan SpinlockRelease menentukan bahwa panggilan ke KeReleaseSpinLock dilakukan secara bergantian ketat dengan KeAcquireSpinLock dan KeAcquireSpinLockRaiseToDpc. Artinya, driver harus memanggil KeReleaseSpinLock setelah memanggil KeAcquireSpinLock atau KeAcquireSpinLockRaiseToDpc dan sebelum panggilan berikutnya ke KeAcquireSpinLock atau ke KeAcquireSpinLockRaiseToDpc.

SpinLockSafe

Aturan SpinLockSafe menentukan bahwa IoStartNextPacket dan IoCompleteRequest tidak dipanggil saat menahan kunci putar.

WithinCriticalRegion

Aturan WithinCriticalRegion menentukan bahwa panggilan driver ke fungsi sinkronisasi tertentu hanya muncul setelah memanggil KeEnterCriticalRegion dan sebelum memanggil KeLeaveCriticalRegion.

Fungsi sinkronisasi yang terpengaruh adalah sebagai berikut:

Untuk memilih seperangkat aturan Penguncian

  1. Pilih proyek driver Anda (.vcxProj) di Microsoft Visual Studio. Dari menu Driver , klik Luncurkan Pemverifikasi Driver Statis....

  2. Klik tab Aturan . Di bawah Seperangkat Aturan, pilih Penguncian.

    Untuk memilih seperangkat aturan default dari jendela prompt perintah pengembang Visual Studio, tentukan Locking.sdv dengan opsi /check . Contohnya:

    msbuild /t:sdv /p:Inputs="/check:Locking.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Untuk informasi selengkapnya, lihat Menggunakan Pemverifikasi Driver Statis untuk Menemukan Cacat dalam perintah Driver dan Pemverifikasi Driver Statis (MSBuild).