Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
SDV'nin bir sürücüyü doğrulaması için sürücü kodunu, özellikle de sürücünün giriş noktalarını ve gerekli sürücü işlevselliğini destekleyen işlev ve yordamlardaki kodu yorumlayabilmesi gerekir.
Aşağıdaki bölümlerde sürücüler için temel gereksinimler ve SDV'nin doğrulandığı sürücülerden beklediği belirli söz dizimi açıklanmaktadır. SDV, sürücülerin bu gereksinimlere uyduğunu doğrulamaz, ancak sürücü uyumlu değilse, SDV çalışmayabilir ve nadir durumlarda yanlış yorum nedeniyle hatalı pozitif veya yanlış negatif sonuçlar bildirir.
Önemli
SDV artık desteklenmemektedir ve SDV, Windows 24H2 WDK veya EWDK sürümlerinde kullanılamaz. Derleme 26017'den daha yeni olan WDK'lerde kullanılamaz ve Windows 24H2 RTM WDK'ye dahil değildir.
SDV, Windows Sürücü Seti'ni (WDK) İndirme sayfasından Visual Studio derleme araçları 17.1.5 ile Windows 11, sürüm 22H2 EWDK (24 Ekim 2023'te yayımlandı) indirilerek kullanılabilir. SDV'yi çalıştırmak için yalnızca Enterprise WDK kullanılması önerilir. Visual Studio'nun son sürümleriyle birlikte standart WDK'nin eski sürümlerinin kullanılması önerilmez, bu da büyük olasılıkla analiz hatalarına neden olur.
Bundan sonra CodeQL, sürücüler için birincil statik analiz aracı olacaktır. CodeQL, kodu sorgulanacak bir veritabanı olarak değerlendiren ve belirli davranışlar, desenler ve daha fazlası için sorgu yazmayı basit hale getiren güçlü bir sorgu dili sağlar.
CodeQL kullanma hakkında daha fazla bilgi için bkz. CodeQL ve Statik Araçlar Logo Testi.
Temel Sürücü Özellikleri
SDV yalnızca aşağıdaki özelliklere sahip sürücüleri doğrulayabilir:
SDV, C ve C++ dilinde yazılmış sürücüleri ve kitaplıkları doğrular.
SDV yalnızca KMDF uyumlu ve WDM uyumlu cihaz sürücülerinde (işlev sürücüleri, filtre sürücüleri ve veri yolu sürücüleri), NDIS sürücüleri (filtre, miniport ve protokol sürücüleri) ve Storport sürücülerinde tam doğrulama gerçekleştirir.
SDV, yukarıdaki kategorilere uymayan sürücülerde genel özelliklerin ( NullCheck gibi) sınırlı doğrulamasını dener.
SDV, WDM işlev rol türlerini kullanarak sürücü geri çağırma işlevlerini bildiren WDM sürücülerini doğrulayabilir. İşlevleri bildirme hakkında bilgi için bkz. WDM Sürücüleri için İşlev Rolü Türlerini Kullanarak İşlevleri Bildirme.
SDV, her geri çağırma işlevini bir SDV-KMDF geri çağırma işlevi rol türü kullanarak bildirmeniz koşuluylaKernel-Mode Driver Framework'ten üretilen sürücüleri doğrulayabilir. Daha fazla bilgi için bkz . KMDF Sürücüleri için İşlev Rolü Türlerini Kullanarak İşlevleri Bildirme.
SDV, bir SDV-NDIS geri çağırma işlevi türü kullanarak her geri çağırma işlevine işlev bildirimiyle açıklama eklemeniz koşuluyla NDIS sürücülerini doğrulayabilir. Daha fazla bilgi için bkz. NDIS Sürücüleri için İşlev Rolü Türlerini Kullanarak İşlevleri Bildirme.
SDV, her geri çağırma işlevine işlev bildirimiyle ek açıklama eklemeniz koşuluyla Storport sürücülerini doğrulayabilir. Bunu bir SDV-Storport geri çağırma işlevi türü kullanarak yaparsınız. Daha fazla bilgi için bkz. Storport Sürücüleri için İşlev Rolü Türlerini Kullanarak İşlevleri Bildirme.
Temel Sürücü Gereksinimleri
SDV'nin bir WDM sürücüsünü doğrulaması için sürücü şunları yapmalıdır:
Wdm.h veya Ntddk.h ekleyin (Wdm.h, Ntddk.h'nin bir alt kümesidir).
Device Objects başlığı olan Cihaz Nesnelerine Giriş ve devamındaki yöntemleri kullanarak cihaz nesneleri oluşturun.
Unload Yordamları Yazma bölümünde önerildiği gibi yazılmış bir Unload yordamına sahip olun.
Her gönderim fonksiyonunu, Fonksiyon Rol Tipi Bildirimlerini Kullanma bölümünde açıklanan fonksiyon rol tipi bildirimi kullanarak beyan edin. WDM rol türleri ve _Dispatch_type_ (tür) ek açıklamaları hakkında bilgi almak için, bkz. WDM Sürücüleri için Fonksiyon Rol Türlerini Kullanarak Fonksiyonları Bildirme.
SDV'nin bir KMDF sürücüsünü doğrulaması için sürücünün şunları yapması gerekir:
Wdf.h ve Ntddk.h'i dahil edin.
Sürücü Geliştirmek için Çerçeveyi Kullanma bölümünde açıklanan KMDF nesnelerini oluşturun.
İşlev Rolü Türü Bildirimlerini Kullanma bölümünde açıklanan SDV-KMDF geri çağırma işlevi rol türünü kullanarak her geri çağırma işlevini açıklayın. Desteklenen rol türlerinin listesi için bkz. Statik Sürücü Doğrulayıcı KMDF İşlev Bildirimleri.
SDV'nin bir NDIS sürücüsünü doğrulaması için sürücünün şunları yapması gerekir:
Ndis.h ve Ntddk.h'yi dahil edin.
NDIS sürücüleri oluşturmak için Ağ Tasarım Kılavuzu) yönergelerini izleyin.
Her geri çağırma işlevine, İşlev Rol Türü Bildirimlerini Kullanma bölümünde açıklandığı gibi SDV-NDIS geri çağırma işlev rol türü kullanarak not ekleyin. Desteklenen rol türlerinin listesi için bkz. Statik Sürücü Doğrulayıcı NDIS İşlev Bildirimleri.
Ayrıca, SDV aşağıdakileri destekleyen sürücüleri doğrulayabilir:
Ayrılmış İşlev Adları
Sürücü veya kitaplık kodu SDV'nin dahili olarak kullandığı işlev adı desenlerini kullandığında SDV doğrulama altyapısı düzgün çalışmaz.
Özellikle, SDV aşağıdakiler durumunda kodu doğru yorumlamaz:
Kod, __init ile başlayan ve ardından __init123 gibi bir veya daha fazla tamsayı içeren işlev adlarını içerir.
Kod, sdv_Func gibi sdv_ ile başlayan veya Func_sdv_ veya Func_sdv_foo gibi _sdv_ dizesini içeren işlev adlarını içerir.
Kitaplık, dışarı aktarılan bir işlevi yeniden adlandırmak için bir
.defdosya kullanır ve dış ad, kitaplıktaki başka bir statik işlevin adıyla aynıdır.
Sürücü kodu veya kitaplık kodu bu öğeleri içeriyorsa, SDV sürücüyü doğrulamayı veya kitaplığı işlemeyi dener, ancak sonuç Desteklenmiyor Özelliği (NSF) olur. SDV sonuçları hakkında daha fazla bilgi için bkz. Statik Sürücü Doğrulayıcı Sonuçlarını Yorumlama.