Bagikan melalui


Menggunakan Pemverifikasi KMDF

Kerangka kerja ini menyediakan fungsionalitas verifikasi bawaan yang dapat Anda gunakan untuk menguji driver KMDF yang sedang berjalan. Fungsionalitas ini, yang disebut KMDF Verifier, secara ekstensif memvalidasi status driver Anda dan argumen yang diteruskan driver ke metode objek kerangka kerja. Anda dapat menggunakan pemverifikasi kerangka kerja dengan sendirinya atau bersama dengan alat Driver Verifier (Verifier.exe) tujuan umum.

Jika Pemverifikasi KMDF diaktifkan, kerangka kerja memeriksa akuisisi kunci dan hierarki, memastikan bahwa panggilan ke kerangka kerja terjadi pada IRQL yang benar, memverifikasi pembatalan I/O dan penggunaan antrean yang benar, dan memastikan bahwa driver dan kerangka kerja mengikuti kontrak yang didokumenkan. Ini juga dapat mensimulasikan kondisi kehabisan memori sehingga pengembang driver dapat menguji apakah driver merespons dengan benar tanpa crash, menggantung, atau gagal membongkar.

Ketika KMDF Verifier diaktifkan, kerangka kerja memecah ke debugger jika periode batas waktu default 60 detik kedaluwarsa sebelum beberapa peristiwa yang dijelaskan sebelumnya telah selesai. Pada titik ini, Anda dapat men-debug masalah, atau mengetik "g" di debugger untuk memulai ulang periode waktu habis. Anda dapat mengubah periode batas waktu default dengan menggunakan nilai registri DbgWaitForSignalTimeoutInSec yang dijelaskan dalam Mengontrol Perilaku Verifier.

Sebaiknya jalankan Driver Verifier (Verifier.exe) selama pengujian, dan tambahkan driver dan wdf01000.sys Anda sendiri ke daftar verifikasi.

Catatan

Pemverifikasi KMDF diaktifkan secara otomatis saat menggunakan pengaturan Driver Verifier /standard . Jika Anda menggunakan /flags alih-alih /standard pengaturan pemverifikasi driver, ketahuilah bahwa pada Windows 10, versi 1803 atau lebih build terbaru, /flags tidak digunakan lagi demi /ruleclasses. Kelas aturan untuk WDF adalah 34. Untuk mengaktifkan pemverifikasi WDF saat /standard tidak digunakan, gunakan /ruleclasses 34.

Anda juga dapat menggunakan Aplikasi Kontrol Pemverifikasi WDF (WdfVerifier.exe) untuk mengaktifkan dan menonaktifkan Pemverifikasi KMDF.

Mengaktifkan dan Menonaktifkan Verifikasi Bawaan Kerangka Kerja

Anda dapat mengaktifkan PEMverifikasi KMDF secara manual menggunakan prosedur ini:

  1. Jika driver Anda sudah dimuat, gunakan Manajer Perangkat untuk menonaktifkan perangkat. Menonaktifkan perangkat menyebabkan driver dibongkar.

  2. Gunakan RegEdit untuk mengatur VerifierOn ke nilai nonzero di subkuntus Parameter\Wdf driver dari kunci HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services di registri Windows. Nilai bukan nol menunjukkan bahwa Pemverifikasi KMDF diaktifkan.

    Anda mungkin perlu menambahkan VerifierOn secara manual ke subkunjuk jika belum ada.

  3. Gunakan Manajer Perangkat untuk mengaktifkan kembali perangkat, sehingga memuat driver.

  4. Saat driver memanggil WdfDriverCreate, kerangka kerja memeriksa registri dan mengaktifkan pemverifikasi kerangka kerja jika VerifierOn ke nilai bukan nol.

Untuk menonaktifkan pemverifikasi kerangka kerja, ikuti langkah yang sama, tetapi atur nilai VerifierOn ke nol.

Untuk menentukan apakah pemverifikasi kerangka kerja diaktifkan, atur titik henti di lokasi setelah driver Anda memanggil WdfDriverCreate dan gunakan perintah ekstensi debugger !wdfdriverinfo:

!wdfkd.wdfdriverinfo <nama **** >driver Anda 0x1

Untuk informasi selengkapnya tentang perintah ekstensi debugger, lihat Ekstensi Debugger untuk Driver berbasis Kerangka Kerja.

Mengontrol Perilaku Pemverifikasi

Kami menyarankan agar Anda menggunakan aplikasi kontrol WDF Verifier untuk mengontrol opsi di bawah ini. Namun, Anda dapat langsung memodifikasi nilai berikut dalam registri.

Nilai yang relevan terletak di bawah kunci Parameters\Wdf dari kunci HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services .

VerifyOn (REG_DWORD)
Atur nilai ini ke nilai bukan nol untuk mengaktifkan makro WDFVERIFY.

DbgBreakOnError (REG_DWORD)
Jika nilai ini diatur ke nilai bukan nol, kerangka kerja akan masuk ke debugger (jika tersedia) setiap kali driver memanggil WdfVerifierDbgBreakPoint.

DbgWaitForSignalTimeoutInSec (REG_DWORD)
Mulai windows 8, ketika VerifierOn dan DbgBreakOnError diatur ke nilai nonzero, driver dapat mengubah periode batas waktu default dengan mengatur DbgWaitForSignalTimeoutInSec.

VerifierAllocateFailCount (REG_DWORD)
Jika nilai ini diatur ke nilai n, kerangka kerja gagal setiap upaya untuk mengalokasikan memori untuk objek driver setelah alokasi ke-n .

TrackHandles (REG_MULTI_SZ)
Jika nilai ini diatur ke daftar satu atau beberapa nama jenis handel objek kerangka kerja, kerangka kerja melacak referensi ke semua handel objek yang cocok dengan jenis handel yang ditentukan.

EnhancedVerifierOptions (REG_DWORD)
KmDF saja

Berisi bitmap yang dapat Anda gunakan untuk mengaktifkan fitur opsional pemverifikasi kerangka kerja.

VerifyDownLevel (REG_DWORD)
Jika diatur ke nilai bukan nol, dan jika driver dibangun dengan versi kerangka kerja yang lebih lama dari versi saat ini, pemverifikasi kerangka kerja menyertakan pengujian yang ditambahkan setelah driver dibuat.

Sebagai aturan umum, jika Anda mengatur nilai registri di atas, hapus saat tidak lagi diperlukan.

Untuk deskripsi lengkap nilai registri ini, lihat Nilai Registri untuk Penelusuran Kesalahan Driver berbasis Kerangka Kerja.