Bagikan melalui


Pemverifikasi Driver: Apa yang Baru

Pemverifikasi Driver tersedia di semua versi Windows yang dimulai dengan Windows 2000. Setiap versi memperkenalkan fitur baru dan memeriksa menemukan bug di driver Windows. Bagian ini meringkas perubahan dan menyediakan tautan ke dokumentasi terkait.

Driver Verifier di Windows 11 (Diperbarui: 30 September 2021)

Dimulai dengan Windows 11, banyak bendera sekarang diaktifkan tanpa boot ulang menggunakan sintaks perintah yang berbeda dari sintaks volatil. Lihat Sintaks Perintah Pemverifikasi Driver untuk informasi selengkapnya tentang sintaks baru.

Driver Verifier di Windows 10 (Diperbarui: 8 Mei 2018)

Penting

Untuk informasi tentang mengaktifkan WDF Verifier di Windows 10, versi 1803 atau rilis terbaru lainnya, lihat Menggunakan Pemverifikasi KMDF.

  • Anda masih dapat mengaktifkan verifikasi WDF sebagai bagian dari bendera Driver Verifier /standard . Lihat Sintaks Perintah Pemverifikasi Driver untuk informasi selengkapnya.
  • Perubahan ini akan berdampak pada Anda jika Anda mengaktifkan DV dengan sintaks /flags 0x209BB karena verifikasi WDF tidak lagi diaktifkan secara otomatis.

Dimulai dengan Windows 10, pemverifikasi driver menyertakan aturan validasi driver baru untuk teknologi berikut:

Driver Verifier di Windows 8-1 (Diperbarui: 17 Juni 2013)

Dimulai dengan Windows 8.1, Driver Verifier memperkenalkan empat opsi baru untuk mendeteksi kesalahan.

Driver Verifier di Windows 8 (Diperbarui: 20 Oktober 2012)

Dimulai dengan Windows 8, Driver Verifier memperkenalkan lima opsi baru untuk mendeteksi kesalahan.

  • Opsi Power Framework Delay Fuzzing menyisipkan penundaan eksekusi acak untuk membantu mendeteksi bug konkurensi pada driver yang menggunakan kerangka kerja manajemen daya (PoFx). Penundaan eksekusi memiliki batas waktu atas. Opsi ini tidak disarankan untuk driver yang tidak secara langsung menggunakan kerangka kerja manajemen daya (PoFx).
  • Opsi pemeriksaan kepatuhan DDI menerapkan aturan penggunaan antarmuka driver perangkat (DDI) yang sama dengan yang digunakan Pemverifikasi Driver Statis untuk memverifikasi bahwa driver Anda melakukan panggilan fungsi pada IRQL yang diperlukan untuk fungsi tersebut. Pemeriksaan kepatuhan DDI dijalankan sebagai bagian dari opsi Pemverifikasi Driver standar.
  • Opsi Invariant MDL Checking for Stack memantau bagaimana driver menangani buffer MDL yang invarian di seluruh tumpukan driver.
  • Opsi Invariant MDL Checking for Driver memantau bagaimana driver menangani buffer MDL yang invarian per driver.
  • Opsi Injeksi Kegagalan Berbasis Tumpukan menyuntikkan kegagalan alokasi sumber daya pada driver mode kernel.

Saat Membuat, menyebarkan, dan menguji driver menggunakan Visual Studio 2012 dan WDK untuk Windows 8, Anda juga dapat mengonfigurasi Driver Verifier untuk berjalan di komputer pengujian saat menyebarkan driver untuk pengujian.

Driver Verifier di Windows 7 (Diperbarui: 22 Oktober 2012)

Untuk Windows 7, Driver Verifier telah ditingkatkan dengan pengujian dan fitur baru yang memungkinkan Driver Verifier untuk mengekspos lebih banyak kelas bug driver umum.

  • Referensi yang Tidak Tepat untuk Handle Pengguna dari Driver Kernel
  • Peningkatan Verifikasi I/O
  • Kumpulan Khusus, Pelacakan Kumpulan, dan Peningkatan Simulasi Sumber Daya Rendah
  • Penggunaan Mekanisme Sinkronisasi yang Salah
  • Referensi Objek Tidak Valid
  • Biaya Kuota Pool dari Rutinitas DPC
  • Blok atau Penundaan Pemadaman Sistem
  • Permintaan I/O Tertunda Paksa yang Ditingkatkan

Di Windows 7, Driver Verifier menyediakan pemeriksaan untuk spin lock yang diantre, pemeriksaan ini menyerupai pemeriksaan yang disediakan untuk spin lock di versi Windows sebelumnya. Pemeriksaan ini mencakup hal-hal berikut:

  • Memverifikasi bahwa operasi yang harus meningkatkan nilai tingkat permintaan interupsi (IRQL), seperti KeAcquireInStackQueuedSpinLock, sebenarnya tidak menurunkan nilai IRQL.

  • Memverifikasi bahwa operasi yang harus menurunkan nilai IRQL, seperti KeReleaseInStackQueuedSpinLock, sebenarnya tidak menaikkan nilai IRQL.

  • Pemangkasan set kerja proses Sistem jika opsi Paksa Pemeriksaan IRQL diaktifkan, ketika IRQL dinaikkan ke DISPATCH_LEVEL atau lebih tinggi, dalam upaya untuk mengekspos kemungkinan referensi ke memori yang dapat dipaging ketika driver berjalan pada IRQL yang ditingkatkan.

  • Memprediksi kemungkinan kebuntuan saat opsi Deteksi KebunTuan diaktifkan.

  • Mencoba menggunakan struktur data KSPIN_LOCK yang sama baik sebagai kunci putaran maupun sebagai kunci putaran antrean tumpukan saat opsi Deteksi Kebuntuan diaktifkan.

  • Memeriksa nilai pointer yang jelas salah, seperti alamat virtual mode pengguna yang digunakan sebagai alamat kunci putar.

  • Mencatat transisi IRQL di log Driver Verifier IRQL. Informasi ini muncul ketika Anda menggunakan ekstensi !verifier 8 dari Windows Debuggers. Lihat !verifier.

Informasi Debugging Tambahan

Di Windows 7, Pemverifikasi Driver menyediakan informasi tambahan berikut yang berguna untuk penelusuran kesalahan:

Ada log dengan jejak tumpukan dalam urutan kronologis untuk panggilan terbaru ke KeEnterCriticalRegion dan KeLeaveCriticalRegion dari driver terverifikasi. Konten log ditampilkan dengan menggunakan ekstensi debugger !verifier 0x200 dari Windows Debuggers. Informasi ini dapat berguna untuk memahami skenario di mana utas secara tak terduga berjalan di wilayah penting atau mencoba meninggalkan wilayah penting yang telah ditinggalkannya.

Anda dapat menampilkan informasi tambahan dari Log Permintaan I/O Tertunda Paksa dengan menggunakan ekstensi !verifier 0x40 debugger. Dalam versi Windows sebelumnya, log hanya berisi satu jejak tumpukan untuk setiap IRP yang dipaksa ditunda oleh Pemverifikasi Driver. Ini adalah jejak stack dari waktu ketika IoCompleteRequest dipanggil untuk pertama kalinya untuk IRP yang tertunda secara paksa. Windows 7 memiliki setidaknya dua entri log, mungkin lebih dari dua, untuk setiap IRP paksa yang tertunda:

  • Pelacakan tumpukan pada saat Driver Verifier memilih IRP untuk dipaksa tertunda. Driver Verifier memilih beberapa IRP untuk dipaksa menunggu ketika salah satu driver yang terverifikasi memanggil IoCallDriver.
  • Jejak tumpukan untuk setiap panggilan IoCompleteRequest untuk IRP paksa yang tertunda sebelum penyelesaian mencapai driver terverifikasi. Lebih dari satu panggilan IoCompleteRequest dapat ada untuk IRP yang sama karena salah satu driver dapat menghentikan penyelesaian sementara dari rutinitas penyelesaiannya dan kemudian melanjutkannya dengan memanggil IoCompleteRequest lagi.

Ada jejak tumpukan yang lebih valid di log Transisi IRQL. Log ini ditampilkan dengan menggunakan !verifier 8. Di versi Windows yang lebih lama dari Windows 7, Driver Verifier dapat mencoba mencatat beberapa jejak tumpukan ini di IRQL yang ditingkatkan dan gagal menangkap jejak tumpukan karena nilai IRQL yang tinggi. Di Windows 7, Driver Verifier mencoba mengambil jejak tumpukan ini:

  • Sebelum menaikkan IRQL, misalnya, ketika driver terverifikasi memanggil KeAcquireSpinLock.
  • Setelah IRQL diturunkan, ketika driver terverifikasi memanggil KeReleaseSpinLock.

Dengan cara ini, Driver Verifier dapat menangkap lebih banyak jejak tumpukan transisi IRQL ini.

!analyze dapat menilai masalah yang ditemukan oleh pemeriksaan Pemverifikasi I/O yang Ditingkatkan (yang merupakan bagian dari I/O Verifier di Windows 7). Dalam versi Windows sebelumnya, pelaporan kesalahan Enhanced I/O Verifier terdiri dari menampilkan deskripsi kerusakan pengandar yang terdeteksi oleh Driver Verifier diikuti dengan masuk ke debugger. Menjalankan !analyze setelah jeda seperti itu tidak menghasilkan triase yang bermakna untuk banyak jeda ini karena !analyze tidak dapat menggunakan informasi dari teks deskripsi kesalahan yang muncul di debugger. Di Windows 7, informasi yang bermakna tentang cacat driver ini disimpan oleh Driver Verifier dalam memori. !analyze dapat menemukan informasi ini dan melakukan triase otomatis yang jauh lebih bermakna untuk banyak jeda ini.

Driver Verifier di Windows Vista (Diperbarui: 9 Februari 2009)

Untuk Windows Vista, Driver Verifier telah ditingkatkan dengan pengujian dan fitur baru.

  • Mengaktifkan Pemverifikasi Pengandar dan Mengubah Pengaturan tanpa Reboot
  • Simulasi Sumber Daya Rendah yang Ditingkatkan
  • Paksakan Permintaan I/O Tertunda
  • Pemeriksaan Keamanan
  • Verifikasi I/O Yang Lebih Menyeluruh
  • Pemeriksaan IRQL yang Ditingkatkan
  • Pemeriksaan Lain-lain
  • Pelacakan Halaman Memori yang Dikunci
  • Pemeriksaan Otomatis Tambahan

Driver Verifier di Windows XP (Diperbarui: 4 Desember 2001)

Driver Verifier adalah alat untuk memantau driver mode kernel Windows dan driver grafis. Microsoft sangat mendorong produsen perangkat keras untuk menguji driver mereka dengan Driver Verifier untuk memastikan bahwa driver tidak melakukan panggilan fungsi ilegal atau menyebabkan kerusakan sistem. Driver Verifier telah ditingkatkan dengan pengujian dan fitur baru untuk Microsoft Windows XP.

Driver yang dikirimkan ke WHQL untuk pengujian harus lulus Driver Verifier. Fitur Pemverifikasi Driver Baru di Windows XP meliputi:

  • Driver Verifier Manager, antarmuka pengguna grafis (GUI) baru untuk verifier.exe
  • Pemeriksaan otomatis baru untuk Pengalihan Tumpukan Pemantauan
  • Opsi Pemverifikasi Driver Baru untuk Verifikasi DMA (juga dikenal sebagai Verifikasi HAL), Deteksi Kebuntuan, dan Verifikasi SCSI
  • Perubahan Verifikasi I/O yang menggabungkan pengujian "Tingkat 1" dan "Tingkat 2", pengujian Verifikasi I/O yang Ditingkatkan opsional
  • Ekstensi debugger baru !deadlock dan !dma
  • Pemeriksaan bug baru: 0xE6 (DRIVER_VERIFIER_DMA_VIOLATION) dan 0xF1 (SCSI_VERIFIER_DETECTED_VIOLATION)
  • Sub-kode tambahan untuk kode pemeriksaan bug yang ada 0xC4 dan 0xC9

Fitur Driver Verifier juga meliputi:

  • Opsi baris perintah Pemverifikasi Baru Utilitas verifier.exe memiliki parameter baru, VolatileDriverList, yang dapat digunakan dengan kata kunci /adddriver untuk menentukan daftar driver yang akan ditambahkan ke pengaturan volatil. VolatileDriverList dapat digunakan dengan kata kunci /removedriver untuk menentukan daftar driver yang akan dihapus.

  • Ekstensi baru !verifier Ekstensi !verifier baru menampilkan informasi log tambahan saat memantau sumber daya yang rendah atau ketika IRQL meningkat dan menggunakan spin lock. Bantuan online juga tersedia.

    • Bendera yang diatur dengan 0x4 menyebabkan tampilan menampilkan log kesalahan yang disuntikkan oleh Driver Verifier selama kondisi simulasi sumber daya rendah
    • Penanda diatur dengan nilai 0x8 dampaknya menyebabkan tampilan menyertakan log perubahan terbaru pada IRQL yang dibuat oleh driver yang diverifikasi
    • Jika Bendera sama persis dengan 0x4 atau 0x8, parameter Kuantitas menentukan jumlah rekaman atau entri log untuk disertakan dalam tampilan
    • Parameter ? menunjukkan teks bantuan singkat
  • Bantuan Online untuk Driver Verifier Manager Bantuan Online untuk Driver Verifier Manager dapat ditampilkan dengan salah satu cara berikut:

    • Pilih dan tahan (atau klik kanan) item di jendela Manajer Pemverifikasi Driver dan pilih Apa Ini? dari menu pop-up.
    • Pilih tanda tanya (?) di sudut kanan atas jendela lalu pilih item di jendela Driver Verifier Manager.