Bagikan melalui


Mengunci seperangkat aturan (KMDF)

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

Di bagian ini

Topik Deskripsi

ParentObjectCheckLock

Aturan ParentObjectCheckLock menentukan bahwa driver harus memanggil WdfWaitLockCreate dan WdfSpinLockCreate mengatur objek induk.

ReqSendWhileSpinlock

Aturan ReqSendWhileSpinlock menentukan bahwa tidak ada permintaan yang dikirim saat driver memegang spinlock.

Spinlock

Aturan Spinlock menentukan bahwa panggilan ke KeAcquireSpinLock atau KeAcquireSpinLockRaiseToDpc dan KeReleaseSpinlock digunakan dalam perubahan ketat.

SpinlockDpc

Aturan SpinlockDpc menentukan bahwa panggilan ke KeAcquireSpinLock atau KeAcquireSpinLockRaiseToDpc dan KeReleaseSpinlock digunakan dalam pergantian yang ketat.

SpinlockRelease

Aturan SpinlockRelease menentukan bahwa panggilan ke KeAcquireSpinLock, KeAcquireSpinLockRaiseToDpc, dan KeReleaseSpinLock digunakan dengan cara yang seimbang dalam panggilan balik KMDF. Di akhir rutinitas panggilan balik KMDF, driver tidak boleh menahan kunci putaran.

WdfInterruptLock

Aturan WdfInterruptLock menentukan bahwa panggilan ke metode WdfInterruptAcquireLock digunakan dalam perubahan ketat dengan panggilan ke WdfInterruptReleaseLock. Selain itu, di akhir rutinitas panggilan balik KMDF, driver tidak boleh memegang objek kunci putar kerangka kerja, yang diperoleh oleh panggilan sebelumnya ke WdfInterruptAcquireLock.

WdfInterruptLockRelease

Aturan WdfInterruptLockRelease menentukan bahwa panggilan ke WdfInterruptAcquireLock dan WdfInterruptReleaseLock digunakan dengan cara yang seimbang dalam rutinitas panggilan balik KMDF. Di akhir rutinitas panggilan balik KMDF, driver tidak boleh memegang objek kunci putar kerangka kerja yang diperoleh oleh panggilan sebelumnya ke WdfInterruptAcquireLock.

WdfSpinlock

Aturan WdfSpinlock menentukan bahwa panggilan ke metode WdfSpinLockAcquire digunakan dalam perubahan ketat dengan WdfSpinlockRelease. Di akhir rutinitas panggilan balik KMDF, driver tidak boleh memegang objek spinlock kerangka kerja yang diperoleh oleh panggilan sebelumnya ke WdfSpinLockAcquire.

WdfSpinlockRelease

Aturan WdfSpinlockRelease menentukan bahwa panggilan ke WdfSpinLockAcquire dan WdfSpinlockRelease digunakan dengan cara yang seimbang dalam fungsi panggilan balik peristiwa KMDF. Ketika fungsi panggilan balik peristiwa KMDF kembali, driver tidak boleh menahan objek kunci putar kerangka kerja yang diperoleh oleh panggilan sebelumnya ke WdfSpinLockAcquire.

WdfWaitlock

Aturan WdfWaitlock menentukan bahwa panggilan ke WdfWaitLockAcquire digunakan dalam perubahan ketat dengan WdfWaitlockRelease. Ketika fungsi panggilan balik peristiwa KMDF kembali, driver tidak boleh menahan objek kunci putar kerangka kerja yang diperoleh oleh panggilan sebelumnya ke WdfWaitLockAcquire.

WdfWaitlockRelease

Aturan WdfWaitlockRelease menentukan bahwa panggilan ke WdfWaitLockAcquire dan WdfWaitLockRelease digunakan dengan cara yang seimbang dalam fungsi panggilan balik peristiwa KMDF. Ketika fungsi panggilan balik peristiwa KMDF kembali, driver tidak boleh menahan objek kunci putar kerangka kerja yang diperoleh oleh panggilan sebelumnya ke WdfWaitLockAcquire.

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 Verifier Driver Statis (MSBuild).