共用方式為


靜態驅動程式驗證器

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

重要

不再支援 SDV,且 Windows 24H2 WDK 或 EWDK 版本無法使用 SDV。 它不適用於比組建 26017 還新的 WDK,而且不包含在 Windows 24H2 RTM WDK 中。 從下載 Windows 驅動程式套件 (WDK) 下載 Windows 11 版本 22H2 EWDK(2023 年 10 月 24 日發行)與 Visual Studio 組建工具 17.1.5,仍然可以使用 SDV。 建議只使用企業 WDK 來執行 SDV。 不建議使用舊版的標準 WDK 搭配最新版的 Visual Studio,因為這可能會導致分析失敗。
接下來,CodeQL 將是驅動程式的主要靜態分析工具。 CodeQL 提供功能強大的查詢語言,會將程式代碼視為要查詢的資料庫,讓您輕鬆地撰寫查詢特定行為、模式等等。 如需使用 CodeQL 的詳細資訊,請參閱 CodeQL 和靜態工具標誌測試

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

靜態驅動程式驗證器可在完整 WDK 體驗和獨立企業 WDK 中作為 Windows 驅動程式套件 (WDK) 的一部分使用。 此外,需要適用於Visual Studio的 C++ 可轉散發套件 套件,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 可以驗證之驅動程式的特定資訊,請參閱 支援的驅動程式

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