Bagikan melalui


Uji Logo Alat Statis

Pengujian ini melakukan analisis statis yang dirancang untuk meningkatkan keandalan dan keamanan driver. Pengiriman driver mode kernel diperlukan untuk lulus Uji Logo Alat Statis untuk sertifikasi. CodeQL harus digunakan untuk analisis statis driver mode-kernel untuk pengiriman ke Microsoft untuk tanda tangan atau sertifikasi untuk mematuhi Program Kompatibilitas Perangkat Keras Windows.

Detail pengujian

   
Spesifikasi
  • Device.DevFund.StaticTools.StaticAnalysisForDrivers
Platform
  • Klien Windows 11 (x64)
  • Windows 11, Klien (ARM64)
  • Windows Server
Rilis yang Didukung
  • Klien Windows 11 (x64)
  • Windows 11, Klien (ARM64)
  • Windows Server
Durasi yang diharapkan (dalam menit) 5
Golongan Pengembangan
Waktu habis (dalam menit) 0
Memerlukan boot ulang salah
Memerlukan konfigurasi khusus salah
Jenis automatic

Analisis Statis untuk Sertifikasi Klien Windows

CodeQL adalah teknologi analisis statis yang kuat untuk mengamankan perangkat lunak. Kombinasi rangkaian ekstensif kueri keamanan bernilai tinggi dan platform yang kuat menjadikannya alat yang tak ternilai untuk mengamankan kode driver pihak ketiga.

Dalam upaya untuk menaikkan bilah keamanan ekosistem Windows, Microsoft telah menambahkan persyaratan ini ke Program Kompatibilitas Perangkat Keras Windows yang menyatakan bahwa semua pengiriman driver harus menggunakan mesin CodeQL pada kode sumber driver dan memperbaiki kueri apa pun yang dianggap "Harus Diperbaiki".

Persyaratan ini diberlakukan oleh Uji Logo Alat Statis.

Silakan lihat CodeQL dan Uji Logo Alat Statis untuk detail tentang cara mengunduh dan menjalankan CodeQL pada kode sumber driver Anda. Mengikuti halaman tersebut bersama dengan bagian "CodeQL dan DVL Generation" di bawah ini akan memastikan bahwa Uji Logo Alat Statis dengan benar menggunakan hasil menjalankan CodeQL pada kode sumber driver sebagai bagian dari Uji Logo Alat Statis.

Jenis driver apa yang berlaku untuk pengujian CodeQL dan Static Tools Logo?

Saat ini, pengujian Logo Alat Statis mengharuskan CodeQL dijalankan dan kumpulan kueri "Harus Diperbaiki" yang diteruskan untuk semua driver mode kernel tidak termasuk driver grafis. Perhatikan bahwa menjalankan CodeQL pada driver grafis sangat disarankan meskipun saat ini tidak diperlukan. Beberapa kueri mungkin juga menemukan cacat yang berguna dalam komponen mode pengguna.

Kami mengantisipasi perluasan pengujian dan kuerinya untuk memerlukan hasil bagi driver grafis, driver mode pengguna dan komponen driver, dan komponen paket driver lainnya di masa mendatang. Jika Anda mengalami perilaku tak terduga atau positif palsu yang menjalankan CodeQL pada driver grafis atau driver mode pengguna, silakan ajukan masalah pada repositori Windows-Driver-Developer-Supplemental-Tools.

Jika Anda menjalankan pengujian pada driver grafis, pengujian akan mengisi HLK tetapi lulus secara default. Jika Anda hanya menjalankan komponen mode pengguna atau mengirimkan paket driver tanpa kode (yaitu ekstensi inf) maka pengujian mungkin tidak terisi. Jika Anda mengirimkan komponen mode kernel dan pengujian secara tidak terduga tidak terisi, pastikan driver Anda ditandatangani pengujian (lihat catatan di bawah).

Baru dalam Analisis Statis untuk Sertifikasi Windows Server

Untuk Sertifikasi Windows Server 2025, CodeQL akan menjadi alat yang diperlukan untuk Uji Logo Alat Statis, ini menyiratkan bahwa semua pengiriman driver harus minimal lulus semua aturan 'harus memperbaiki' agar dapat diterima untuk WHCP. Namun, jika Anda mensertifikasi untuk Windows Server 2022 ke bawah; CA, SDV, dan CodeQL dapat digunakan. Gunakan build WDK dengan versi rilis OS yang cocok.

Untuk informasi tentang mengunduh versi WDK yang berbeda, lihat Mengunduh Windows Driver Kit (WDK). Bergabunglah dengan Program Windows Insider untuk mengunduh build WDK Insider Preview (https://aka.ms/wipwdk).

Pembuatan Log Verifikasi CodeQL dan Driver (DVL)

Microsoft memberlakukan persyaratan menjalankan kueri CodeQL dengan Uji Logo Alat Statis. Uji Logo Alat Statis menggunakan Log Verifikasi Driver (DVL) untuk mengumpulkan hasil dari analisis statis yang berbeda yang dijalankan pada kode sumber driver. DVL ini kemudian diurai sebagai bagian dari Uji Logo Alat Statis melalui pengujian HLK.

Hasil CodeQL akan mengikuti model yang sama menggunakan DVL untuk menunjukkan bahwa driver yang disertifikasi menjalankan kueri CodeQL yang sesuai untuk lulus uji HLK untuk sertifikasi.

Tempatkan file .sarif di direktori yang sama dengan file .vcxproj tempat DVL dibuat. Nama yang tepat tidak masalah selama file berakhir dengan ".sarif".

Dokumentasi tambahan

Pengujian di area fitur ini mungkin memiliki dokumentasi tambahan, termasuk prasyarat, penyiapan, dan informasi pemecahan masalah, yang dapat ditemukan dalam topik berikut:

Menjalankan pengujian

Sebelum menjalankan pengujian, Anda harus membuat Log Verifikasi Driver (DVL) dengan melakukan langkah-langkah berikut.

  1. Jalankan CodeQL, Pemverifikasi Driver Statis, dan alat Analisis Kode sebagaimana diperlukan pada kode sumber driver.

  2. Jalankan utilitas yang menghasilkan file DVL. Untuk informasi selengkapnya tentang membuat file Log Verifikasi Driver untuk disertakan dengan pengiriman Anda, lihat Membuat Log Verifikasi Driver.

  3. Salin file DVL dari komputer yang digunakan untuk membuat file DVL ke komputer uji yang digunakan saat Anda menjalankan Uji Logo Alat Statis. Salin file ke direktori %systemdrive%\DVL pada komputer uji. Pastikan untuk menghapus isi direktori pada komputer uji sebelum Anda menyalin log verifikasi driver baru.

  4. Jalankan Uji Logo Alat Statis. Jika pengujian tidak terisi di HLK, pastikan driver Anda ditandatangani pengujian (lihat di bawah). Atau, jika Anda tidak mengirimkan file .sys sebagai bagian dari paket Anda, diharapkan bahwa pengujian tidak akan terisi.

Catatan

Tujuan dari pengujian Logo Alat Statis adalah untuk mengharuskan Anda, sebagai pengembang driver, untuk menjalankan CodeQL pada driver Anda sebelum pengiriman untuk membantu menghilangkan bug. Namun, kami telah menerima laporan di masa lalu pengujian yang salah meminta hasil CodeQL untuk driver lain di tumpukan karena batasan arsitektur, memblokir sertifikasi.

Untuk mengatasi masalah ini di Windows 24H2, kami telah pindah ke model tempat tanda tangan driver untuk perangkat yang sedang diuji diperiksa. Dengan perubahan ini, driver Windows kotak masuk tidak akan ditandai oleh pengujian. Selain itu, untuk membuka blokir pengembang yang melakukan pengujian HLK pada perangkat pihak ketiga lainnya, pengujian juga akan menghindari hasil penandaan untuk driver yang ditandatangani WHCP.

Saat menjalankan pengujian ini untuk sertifikasi, driver Anda harus ditandatangani untuk memastikan fungsi pengujian dengan benar. Gagal melakukannya dapat mengakibatkan pengujian gagal memperingatkan tentang pelanggaran CodeQL, atau pengujian gagal menghitung.

Catatan

Uji Logo Alat Statis hanya memerlukan file DVL untuk menunjukkan bahwa Code QL telah dijalankan. Pengujian tidak mengharuskan semua aturan untuk lulus. Selain itu, pekerjaan ini harus dijalankan di Server dengan Desktop. Jika pengujian HLK gagal menggunakan Server Core (dengan pesan kesalahan: "RoMetadata.dll tidak dapat ditemukan"), solusinya adalah menjalankan di Server dengan Desktop lalu menggabungkan paket dengan paket yang berisi hasil dari Server Core. Informasi tentang cara menggabungkan paket dapat ditemukan di sini: /windows-hardware/test/hlk/user/merge-packages.

Pemecahan Masalah

Untuk pemecahan masalah umum kegagalan pengujian HLK, lihat Pemecahan Masalah Kegagalan Pengujian Windows HLK.

Informasi selengkapnya

Sintaks perintah

Opsi perintah Deskripsi

TE.exe /inproc /enablewttlogging /appendwttlogging Devfund_DvlTest.dll /p:WDKClass=[WDKClass] /p:DeviceClass=[DeviceClass] /p:QueryDriverNames=[QueryDriverNames]

Menjalankan pengujian.

Catatan

Untuk bantuan baris perintah untuk biner pengujian ini, ketik /?.

Daftar file

File Lokasi

Devfund_DvlTest.dll

<testbinroot>\OSBinRoot

Microsoft.StaticToolsLogo.ObjectModel.dll

<testbinroot>\OSBinRoot

TE.exe

<testbinroot>\OSBinRoot

Parameter

Nama Parameter Deskripsi parameter
WDKClass Kelas Perangkat
DeviceClass Parameter Kelas Perangkat
QueryDriverNames Nama driver yang diharapkan.