Aracılığıyla paylaş


DDI kullanım kuralı kümesi (WDM)

Sürücünüzün WDM DDI'lerini doğru kullandığını doğrulamak için bu kuralları kullanın.

Bu bölümde

Konu Açıklama

DebugBreakUsage

DebugBreakUsage kuralı, sürücünün DbgBreakPoint veya DbgBreakPointWithStatus'u çağırmaması gerektiğini belirtir. Bu kural yalnızca sürücünün hata ayıklama olmayan bir sürümünü oluştururken geçerlidir.

DoubleFetch

DoubleFetch kuralı, kullanıcı modu bellek işaretçilerinden çift getirme işlemini denetler. Kullanıcı modu belleğine çift çekirdek modunda erişim, yarış durumu nedeniyle bir güvenlik sorununa yol açabilir. Kullanıcı modu verilerine erişirken çekirdek modu kodunun kullanıcı modu verilerinin yerel olarak bir kopyasını alması ve kullanıcı modu verilerine birden çok kez erişmesini önlemesi gerekir. Bunun başarısız olması, verilere ilk erişildikten sonra değişebileceği "çift getirme" olarak bilinen bir sorun türüyle sonuçlanır.

NullCheck

NullCheck kuralı, sürücü kodundaki bir NULL değerin sürücüde daha sonra başvurulmadığını doğrular. Bu kural, bu koşullardan biri doğruysa bir hata bildirir:

  • Daha sonra başvurulan bir NULL ataması vardır.
  • Sürücüde, NULL olabilecek ve daha sonra değeri çözümlenecek bir yordam için global bir değişken/parametre vardır ve sürücüde işaretçinin ilk değerinin NULL olabileceğini belirten açık bir denetleme bulunmaktadır.

NullCheck kuralı ihlalleriyle, en ilgili kod deyimleri izleme ağacı bölmesinde vurgulanır. Rapor çıkışıyla çalışma hakkında daha fazla bilgi için bkz. Statik Sürücü Doğrulayıcı Raporu ve İzleme Görüntüleyicisi'ni Anlama.

SafeStrings

SafeStrings kuralı, sürücünün yalnızca sistemi yanlışlıkla veya kötü amaçlı yetkisiz erişime karşı koruyan dize işleme işlevlerini çağırdığını belirtir. Sürücüler için bu güvenli dize işlevleri Ntstrsafe.h içinde tanımlanır.

EskiDDI'ler

EskiDDIs kuralı, sürücülerin FsRtlPrivateLock çağırmaması gerektiğini belirtir. Bu işlev kullanımdan kaldırıldı. Bunun yerine FsRtlFastLock kullanın.

DDI kullanım kuralı kümesini seçmek için

  1. Microsoft Visual Studio'da sürücü projenizi (.vcxProj) seçin. Sürücüsü menüsünde tıklayın, Statik Sürücü Doğrulayıcıyı Başlat....

  2. Kurallar sekmesine tıklayın. Kural Kümeleri'nin altında DDIUsage'ı seçin.

    Visual Studio geliştirici komut istemi penceresinden varsayılan kural kümesini seçmek için /check seçeneğiyle DDIUsage.sdv belirtin. Örneğin:

    msbuild /t:sdv /p:Inputs="/check:DDIUsage.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Daha fazla bilgi için Sürücülerdeki Hataları Bulmak için Statik Sürücü Doğrulayıcı Kullanma ve Statik Sürücü Doğrulayıcı Komutları (MSBuild)bölümüne bakın.