共用方式為


WDM (DDI 使用規則集)

使用這些規則來確認驅動程序正確使用WDM DIS。

本節內容

主題 描述

DebugBreakUsage

DebugBreakUsage 規則指定驅動程式不得呼叫 DbgBreakPointDbgBreakPointWithStatus。 此規則僅適用於您建置非偵錯版本的驅動程式時。

DoubleFetch

DoubleFetch 規則會檢查使用者模式記憶體指標是否有雙重擷取。 使用者模式記憶體的雙重核心模式存取可能會導致競爭狀況安全性問題。 存取使用者模式數據時,核心模式程式代碼必須在本機建立使用者模式數據的複本,並避免多次存取使用者模式數據。 無法這麼做會導致稱為「雙重擷取」的問題類型,其中數據在第一次存取之後可能會變更。

NullCheck

NullCheck 規則會確認驅動程式程式代碼內的 NULL 值稍後不會在驅動程式中取值。 如果下列任一條件成立,此規則會報告瑕疵:

  • 稍後會取值 NULL。
  • 驅動程式中有全域/參數,可能是稍後取值為 NULL 的程式,而且驅動程式中有明確檢查,表示指標的初始值可能是 NULL。

使用 NullCheck 規則違規時,追蹤樹狀目錄中會醒目提示最相關的程式代碼語句。 如需使用報表輸出的詳細資訊,請參閱 靜態驅動程序驗證器報表了解追蹤查看器

SafeStrings

SafeStrings 規則會指定驅動程式只會呼叫保護系統免於意外或惡意入侵的字串操作函式。 這些驅動程式的安全字串函式定義於 Ntstrsafe.h 中。

過時的DIS

ObsoleteDIS 規則會指定驅動程式不應該呼叫 FsRtlPrivateLock。 此函式已過時。 請改用 FsRtlFastLock

若要選取 DDI 使用規則集

  1. 在 Microsoft Visual Studio 中選取您的驅動程式專案 (.vcxProj) 。 從 [ 驅動程式] 功能表中,按兩下 [ 啟動靜態驅動程序驗證程式...]。

  2. 按兩下 [ 規則] 索引 標籤。在 [規則集] 底下,選取 [DDIUsage]。

    若要從 Visual Studio 開發人員命令提示字元視窗中選取預設規則集,請使用 /check 選項指定 DDIUsage.sdv。 例如:

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

    如需詳細資訊,請參閱 使用靜態驅動程式驗證器在驅動程式靜態驅動程式驗證器命令中尋找瑕疵, (MSBuild)