Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Windows Driver Kit (WDK) menyediakan alat verifikasi driver yang membantu Anda mendeteksi dan memperbaiki kesalahan selama pengembangan. Alat-alat ini termasuk alat analisis statis seperti CodeQL dan alat dinamis seperti Driver Verifier yang dapat menemukan bug penting sebelum penyebaran. Menggunakan alat verifikasi ini di awal pengembangan menghemat waktu dan mencegah masalah driver serius dalam produksi.
Dokumentasi WDK menjelaskan alat verifikasi ini dan merekomendasikan penggunaannya karena setiap alat mendeteksi berbagai jenis kesalahan driver dengan cara yang berbeda. Alat-alat ini jauh lebih efisien daripada pemeriksaan manual. Mereka dapat mendeteksi kesalahan yang biasanya tidak ditemukan dalam pengujian driver standar, dan mereka mewujudkan keahlian pengembang driver berpengalaman dan perancang antarmuka driver Windows.
Untuk hasil terbaik, gunakan semua alat yang dapat berjalan pada driver Anda. Jika Anda menghilangkan salah satu alat ini, Anda mungkin melewatkan bug serius di driver Anda.
Alat verifikasi statis dan dinamis
Ada dua jenis alat verifikasi dasar:
Alat verifikasi statis memeriksa kode driver tanpa menjalankan driver. Karena alat-alat ini tidak bergantung pada pengujian yang menjalankan kode, alat ini bisa sangat menyeluruh. Secara teoritis, alat verifikasi statis dapat memeriksa semua kode driver, termasuk jalur kode yang jarang dijalankan dalam praktiknya. Namun, karena driver tidak benar-benar berjalan, alat-alat ini mungkin menghasilkan hasil positif palsu. Artinya, mereka mungkin melaporkan kesalahan dalam jalur kode yang tidak terjadi dalam praktiknya.
CodeQL adalah alat analisis statis utama untuk driver. CodeQL menyediakan bahasa kueri canggih yang memperlakukan kode sebagai database yang akan dikueri, sehingga mudah untuk menulis kueri untuk perilaku dan pola tertentu. Program Kompatibilitas Perangkat Keras Windows memerlukan CodeQL untuk Pengujian Logo Alat Statis (STL) pada sistem operasi Klien dan Server kami. Untuk informasi selengkapnya, lihat CodeQL dan Uji Logo Alat Statis.
Alat verifikasi dinamis memeriksa kode driver saat driver berjalan, biasanya dengan mencegat panggilan ke rutinitas dukungan driver yang umum digunakan dan mengganti panggilan ke versi pemeriksaan kesalahan mereka sendiri dari rutinitas yang sama. Karena driver benar-benar berjalan saat alat dinamis melakukan verifikasi, hasil positif palsu jarang terjadi. Namun, karena alat dinamis hanya mendeteksi tindakan yang terjadi saat memantau driver, alat dapat melewatkan cacat driver tertentu jika cakupan pengujian driver tidak memadai. Pada saat yang sama, dengan menggunakan informasi yang tersedia pada waktu proses - misalnya, informasi yang lebih sulit untuk diekstrak secara statis dari kode sumber - alat verifikasi dinamis dapat mendeteksi kelas kesalahan driver tertentu yang lebih sulit dideteksi dengan alat analisis statis.
Gunakan kombinasi alat verifikasi statis dan dinamis. Alat statis memungkinkan Anda memeriksa jalur kode yang sulit dilatih dalam praktiknya, sementara alat dinamis menemukan kesalahan serius yang terjadi di driver.
Gambaran umum alat verifikasi
Penting
Alat Pemverifikasi Driver Statis (SDV) tidak lagi didukung. Tidak tersedia di WDK yang lebih baru dari build 26017, termasuk Windows 24H2 RTM WDK. Menggunakan SDV untuk analisis tidak disarankan.
WDK menjelaskan alat verifikasi berikut dan merekomendasikan penggunaannya oleh pengembang driver dan penguji. Mereka tercantum dalam urutan di mana Anda biasanya menggunakannya.
Setelah kode dikompilasi
- CodeQL adalah mesin analisis kode semantik yang kuat. Kombinasi rangkaian ekstensif kueri keamanan bernilai tinggi dan platform yang kuat menjadikannya alat yang tak ternilai untuk mengamankan kode driver. Untuk informasi selengkapnya, lihat CodeQL dan Uji Logo Alat Statis.
Ketika driver berjalan
Gunakan alat verifikasi dinamis berikut segera setelah driver dibangun dan berjalan tanpa kesalahan yang jelas.
Driver Verifier adalah alat verifikasi dinamis yang ditulis terutama untuk driver Windows. Ini termasuk beberapa pengujian yang dapat Anda jalankan pada beberapa driver secara bersamaan. Driver Verifier sangat efektif dalam menemukan bug serius pada driver sehingga para pengembang dan penguji berpengalaman mengonfigurasinya untuk berjalan setiap kali driver mereka beroperasi di lingkungan pengembangan atau pengujian. Pemverifikasi Driver disertakan dalam Windows. Saat mengaktifkan Driver Verifier untuk driver, Anda juga harus menjalankan beberapa pengujian pada driver. Driver Verifier dapat mendeteksi bug driver tertentu yang sulit dideteksi dengan menggunakan alat verifikasi statis saja. Contoh jenis bug ini meliputi yang berikut ini:
Buffer kumpulan kernel overruns. Ketika driver terverifikasi mengalokasikan buffer memori kumpulan, Driver Verifier melindunginya dengan menggunakan halaman memori yang tidak dapat diakses. Jika driver mencoba menggunakan memori melewati akhir buffer, Driver Verifier memulai pemeriksaan bug.
Menggunakan memori setelah membebaskannya. Blok memori kumpulan khusus menggunakan halaman memori mereka sendiri dan tidak berbagi halaman memori dengan alokasi lain. Ketika driver membebaskan blok memori kumpulan, halaman memori yang sesuai menjadi tidak dapat diakses. Jika driver mencoba menggunakan memori tersebut setelah membebaskannya, driver langsung mengalami crash.
Menggunakan memori yang dapat di-pageable saat berjalan pada IRQL yang ditinggikan. Ketika driver terverifikasi menaikkan IRQL pada DISPATCH_LEVEL atau lebih tinggi, Driver Verifier memangkas semua memori yang dapat di-pageable dari set kerja sistem, mensimulasikan sistem di bawah tekanan memori. Driver mengalami crash jika mencoba menggunakan salah satu alamat virtual yang dapat di-pageable ini.
Simulasi Sumber Daya Rendah. Untuk mensimulasikan sistem dalam kondisi sumber daya rendah, Driver Verifier dapat menyebabkan kegagalan pada berbagai sistem operasi API kernel yang dipanggil oleh driver.
Kebocoran memori. Driver Verifier melacak alokasi memori yang dibuat oleh driver dan memastikan driver membebaskan memori sebelum dibongkar.
Operasi I/O yang membutuhkan terlalu banyak waktu untuk diselesaikan atau dibatalkan. Driver Verifier dapat menguji logika dari driver dalam merespons nilai yang dikembalikan oleh IoCallDriver.
Pemeriksaan Kepatuhan DDI. (Tersedia dimulai dengan Windows 8) Driver Verifier menerapkan serangkaian aturan antarmuka driver perangkat (DDI) yang memeriksa interaksi yang tepat antara driver dan antarmuka kernel sistem operasi.
Kernel Address Sanitizer (KASAN) adalah teknologi deteksi bug yang didukung pada driver Windows yang memungkinkan Anda mendeteksi beberapa kelas akses memori ilegal, seperti luapan buffer dan peristiwa bebas penggunaan.
Application Verifier adalah alat verifikasi dinamis untuk aplikasi mode pengguna dan driver yang ditulis dalam C atau C++. Ini tidak memverifikasi kode terkelola.