靜態驅動程式驗證器

靜態驅動程式驗證器(也稱為 “StaticDV” 或 “SDV”) 是靜態驗證工具,可有系統地分析 Windows 核心模式驅動程式的原始程式碼。 SDV 是一種編譯時間工具,能夠探索驅動程式中的缺陷和設計問題。 根據一組介面規則和操作系統的模型,SDV 會判斷驅動程式是否正確地與 Windows 操作系統核心互動。

重要

Windows 硬體相容性計劃需要 CodeQL,在我們的用戶端和伺服器作業系統上進行靜態工具標誌 (STL) 測試。 我們將繼續在舊版產品上維護 SDV 和 CA 的支援。 強烈建議合作夥伴檢閱靜態工具標誌測試的程式代碼QL需求。 如需使用 CodeQL 的詳細資訊,請參閱 CodeQL 和靜態工具標誌測試

安裝靜態驅動程式驗證程式

靜態驅動程式驗證器可在完整 WDK 體驗和獨立企業 WDK 中作為 Windows 驅動程式套件 (WDK) 的一部分使用。 此外,需要 C++ 可轉散發套件 適用於 Visual Studio 的套件,SDV 才能執行。 請參閱下列項目:

針對適用於 Windows 10 版本 1809 或更早版本的 WDK 中提供的 SDV 版本,應該安裝適用於 Visual Studio 2012 的 C++ 可轉散發套件 套件,而不是 2017 套件。

Visual Studio 整合

靜態驅動程式驗證器已整合至Visual Studio。 您可以在 Visual Studio 驅動程式項目上執行靜態分析。 您可以從 Visual Studio 中的 [驅動程式] 選單啟動、設定及控制靜態驅動程式 驗證器。

靜態驅動程式驗證器檔

在 Windows 驅動程式程式代碼中尋找 Bug

Microsoft 會使用 SDV 來測試隨附於 Microsoft Windows 作業系統的核心模式驅動程式,以及測試 WDK 中的範例驅動程式。 透過針對特定驅動程式模型使用 DDI 合規性規則,SDV 可以驗證正確的驅動程式行為。 例如,SDV 可以確認驅動程式:

  • 在正確的 IRQL 呼叫函式
  • 以正確的順序取得和釋放鎖定
  • 正確使用處理 I/O 要求封包的函式 (IRP)

SDV 會透過驅動程式程式代碼檢查所有可能的路徑。 其設計目的是在模糊路徑中找出嚴重錯誤,即使在徹底測試中也不太可能遇到這些錯誤。

其他資源

如需 SDV 可以驗證之驅動程式的特定資訊,請參閱 支援的驅動程式

如需使用靜態驅動程序驗證器的詳細資訊和秘訣,請參閱下列各項: