使用這些規則來確認您的驅動程式正確使用 WDM DDI。
本節中
| 主題 | 說明 |
|---|---|
DebugBreakUsage 規則指定驅動程式不得呼叫 DbgBreakPoint 或 DbgBreakPointWithStatus。 只有在您建置驅動程式的非偵錯版本時,才會套用此規則。 |
|
DoubleFetch 規則會檢查從使用者模式記憶體指標的二次擷取。 使用者模式記憶體的雙重核心模式存取可能會導致競爭條件安全性問題。 在存取使用者模式資料時,核心模式程式碼需要在本機複製使用者模式數據,避免多次存取使用者模式資料。 如果不這樣做,就會導致一種稱為「雙重擷取」的問題,其中資料在首次存取後可能會發生變化。 |
|
NullCheck 規則會確認驅動程式程式碼中的 NULL 值在驅動程式中稍後不會被取消引用。 如果下列任一條件為true,則此規則會報告缺陷:
如果 NullCheck 規則違規,最相關的程式碼陳述式會在追蹤樹狀結構窗格中醒目提示。 如需使用報表輸出的詳細資訊,請參閱 靜態驅動程式驗證器報表 和 瞭解追蹤檢視器。 |
|
SafeStrings 規則指定驅動程式只會呼叫那些字串操作函式,以保護系統免於意外或惡意入侵。 驅動程式的這些安全字串函式定義在 Ntstrsafe.h 中。 |
|
ObsoleteDDIs 規則會指定驅動程式不應該呼叫 FsRtlPrivateLock。 此函式已經過時。 請改用 FsRtlFastLock。 |
選取 DDI 使用規則集
在 Visual Studio Microsoft中選取您的驅動程式專案 (.vcxProj)。 從 驅動程式 選單中,點擊 啟動靜態驅動程式驗證程式…。
按一下 規則 索引標籤。在 [規則集] 底下,選取 [DDIUsage]。
若要從 Visual Studio 開發人員命令提示字元視窗選取預設規則集,請使用 /check 選項指定 DDIUsage.sdv。 例如:
msbuild /t:sdv /p:Inputs="/check:DDIUsage.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32如需詳細資訊,請參閱 使用靜態驅動程式驗證器尋找驅動程式中的瑕疵 和 靜態驅動程式驗證器命令(MSBuild)。