Aracılığıyla paylaş


Sürücüleri doğrulama araçları

Windows Sürücü Seti (WDK), geliştirme sırasında hataları algılamanıza ve düzeltmenize yardımcı olan sürücü doğrulama araçları sağlar. Bu araçlar CodeQL gibi statik analiz araçlarını ve dağıtımdan önce kritik hataları bulabilen Sürücü Doğrulayıcı gibi dinamik araçları içerir. Geliştirme aşamasında bu doğrulama araçlarının kullanılması zamandan tasarruf sağlar ve üretimdeki ciddi sürücü sorunlarını önler.

WDK belgelerinde bu doğrulama araçları açıklanır ve her araç farklı türde sürücü hataları algıladığı için bunların kullanılmasını önerir. Bu araçlar el ile yapılan denetimlerden çok daha verimlidir. Genellikle standart sürücü testlerinde bulunmayan hataları algılayabilir ve deneyimli sürücü geliştiricilerinin ve Windows sürücü arabirimi tasarımcılarının uzmanlığını benimserler.

En iyi sonuçlar için sürücünüzde çalıştırabileceğiniz tüm araçları kullanın. Bu araçlardan herhangi birini atlarsanız sürücünüzdeki ciddi bir hatayı kaçırabilirsiniz.

Statik ve dinamik doğrulama araçları

İki temel doğrulama aracı türü vardır:

  • Statik doğrulama araçları , sürücüyü çalıştırmadan sürücü kodunu inceler. Bu araçlar kodu kullanan testlere dayanmadığından, son derece kapsamlı olabilir. Teorik olarak, statik doğrulama araçları pratikte nadiren yürütülen kod yolları da dahil olmak üzere tüm sürücü kodunu inceleyebilir. Ancak, sürücü gerçekten çalışmadığından, bu araçlar hatalı pozitif sonuçlar oluşturabilir. Başka bir ifadeyle, gerçek kullanımda ortaya çıkmayan bir kod yolunda hata bildirebilirler.

    CodeQL , sürücüler için birincil statik analiz aracıdır. CodeQL, kodu sorgulanacak bir veritabanı olarak değerlendiren güçlü bir sorgu dili sağlar ve bu da belirli davranışlar ve desenler için sorgu yazmayı basit hale getirir. Windows Donanım Uyumluluk Programı, İstemci ve Sunucu işletim sistemlerimizde Statik Araç Logosu (STL) Testleri için CodeQL gerektirir. Daha fazla bilgi için bkz. CodeQL ve Statik Araçlar Logo Testi.

  • Dinamik doğrulama araçları, sürücü çalışırken sürücü kodunu inceler; genellikle yaygın olarak kullanılan sürücü destek yordamlarına yapılan çağrıları keserek ve aynı yordamların kendi hata denetimi sürümlerine çağrıları değiştirerek bunu gerçekleştirir. Dinamik araçlar doğrulama yaparken sürücü gerçekten çalıştığından hatalı pozitif sonuçlar nadirdir. Ancak dinamik araçlar yalnızca sürücüyü izlerken gerçekleşen eylemleri algıladığından, sürücü testi kapsamı yeterli değilse araçlar bazı sürücü hatalarını kaçırabilir. Aynı zamanda, çalışma zamanında sağlanan bilgileri kullanarak (örneğin, kaynak koddan statik olarak ayıklanması zor olan bilgiler) dinamik doğrulama araçları, statik analiz araçlarıyla algılanması zor olan belirli sürücü hata sınıflarını algılayabilir.

Statik ve dinamik doğrulama araçlarının birleşimini kullanın. Statik araçlar pratikte alıştırma yapmak zor olan kod yollarını denetlemenize olanak sağlarken, dinamik araçlar sürücüde oluşan ciddi hatalar bulur.

Doğrulama araçlarına genel bakış

Önemli

Statik Sürücü Doğrulayıcı (SDV) aracı artık desteklenmiyor. Windows 24H2 RTM WDK dahil olmak üzere 26017 derlemesinden daha yeni olan WDK'lerde kullanılamaz. Analiz için SDV kullanılması önerilmez.

WDK aşağıdaki doğrulama araçlarını açıklar ve bunların sürücü geliştiricileri ve test ediciler tarafından kullanılmasını önerir. Genellikle kullandığınız sıra ile listelenirler.

Kod derlendiğinde

  • CodeQL güçlü bir anlamsal kod analizi altyapısıdır. Yüksek değerli güvenlik sorgularından oluşan kapsamlı bir paketin ve sağlam bir platformun birleşimi, sürücü kodunun güvenliğini sağlamak için çok değerli bir araç haline getirir. Daha fazla bilgi için bkz. CodeQL ve Statik Araçlar Logo Testi.

Sürücü çalıştığında

Sürücü oluşturulup çalıştırıldığında ve belirgin bir hata olmaksızın çalışır duruma geldiğinde, aşağıdaki dinamik doğrulama araçlarını kullanın.

  • Sürücü Doğrulayıcı , özellikle Windows sürücüleri için yazılmış dinamik bir doğrulama aracıdır. Aynı anda birkaç sürücüde çalıştırabileceğiniz birden çok test içerir. Sürücü Doğrulayıcı, sürücü geliştiricilerinin ve test edenlerin sürücü geliştirme veya test ortamında her çalıştırıldığında çalıştırılacak şekilde yapılandırdıkları sürücülerdeki ciddi hataları bulma konusunda çok etkilidir. Sürücü Doğrulayıcı, Windows'a dahildir. Sürücü için Sürücü Doğrulayıcı'yı etkinleştirdiğinizde, sürücüde birden çok test de çalıştırmanız gerekir. Sürücü Doğrulayıcı, yalnızca statik doğrulama araçlarını kullanarak algılanması zor olan bazı sürücü hatalarını algılayabilir. Bu tür hatalara örnek olarak şunlar verilebilir:

    • Çekirdek havuzu arabellek taşmaları. Doğrulanmış sürücü havuz bellek arabellekleri ayırdığında, Sürücü Doğrulayıcı bunları erişilebilir olmayan bir bellek sayfası kullanarak korur. Sürücü arabelleğin sonundan sonra belleği kullanmayı denerse, Sürücü Doğrulayıcı bir hata denetimi başlatır.

    • Boşaltıldıktan sonra belleği kullanma. Özel havuz bellek blokları kendi bellek sayfalarını kullanır ve bellek sayfalarını diğer tahsislerle paylaşmaz. Sürücü havuz belleği bloğunu boşalttığında, ilgili bellek sayfası erişilemez hale gelir. Sürücü bu belleği serbest bıraktıktan sonra kullanmayı denerse, sürücü hemen kilitlenir.

    • Yükseltilmiş IRQL'de çalışırken sayfa belleği kullanma. Doğrulanmış bir sürücü IRQL'i DISPATCH_LEVEL veya daha yüksek bir değere yükselttiğinde, Sürücü Doğrulayıcı sistem çalışma setindeki tüm sayfalanabilir belleği azaltarak, bellek baskısı altındaki bir sistemi simüle eder. Bu sayfalanabilir sanal adreslerden birini kullanmayı denerse sürücü kilitleniyor.

    • Düşük Kaynak Simülasyonu. Düşük kaynak koşulları altında bir sistemin benzetimini yapmak için Sürücü Doğrulayıcı, sürücülerin çağırabileceği çeşitli işletim sistemi çekirdek API'lerini başarısız yapabilir.

    • Bellek sızıntıları. Sürücü Doğrulayıcı, bir sürücü tarafından yapılan bellek ayırmalarını izler ve sürücünün bellek yüklenmeden önce belleği boşaltmasını sağlar.

    • Tamamlanması veya iptal edilmesi çok fazla zaman gerektiren G/Ç işlemleri. Sürücü Doğrulayıcı, STATUS_PENDING döndürülen değerlere yanıt vermek için sürücünün mantığını test edebilir.

    • DDI Uyumluluk Denetimi. (Windows 8'den itibaren kullanılabilir) Sürücü Doğrulayıcı, bir sürücü ile işletim sisteminin çekirdek arabirimi arasındaki doğru etkileşimi denetleen bir dizi cihaz sürücüsü arabirimi (DDI) kuralı uygular.

  • Kernel Address Sanitizer (KASAN), arabellek taşmaları ve kullanım sonrası serbest bırakmalar gibi çeşitli geçersiz bellek erişimi sınıflarını algılamanıza olanak tanıyan ve Windows sürücülerinde desteklenen bir hata algılama teknolojisidir.

  • Uygulama Doğrulayıcı , C veya C++ dilinde yazılmış kullanıcı modu uygulamaları ve sürücüleri için dinamik bir doğrulama aracıdır. Yönetilen kodu doğrulamaz.