静的ドライバー検証ツール ("StaticDV" または "SDV" とも呼ばれます) は、Windows カーネル モード ドライバーのソース コードを体系的に分析する静的検証ツールです。 SDV は、ドライバーの欠陥や設計の問題を検出できるコンパイル時ツールです。 一連のインターフェイス規則とオペレーティング システムのモデルに基づいて、SDV は、ドライバーが Windows オペレーティング システムカーネルと正しく対話するかどうかを決定します。
Von Bedeutung
SDV はサポートされなくなり、Windows 24H2 WDK または EWDK リリースでは SDV を使用できません。 ビルド 26017 より新しい WDK では使用できません。また、Windows 24H2 RTM WDK には含まれていません。
SDV は、Windows Driver Kit (WDK) のダウンロードから Visual Studio ビルド ツール 17.1.5 を使用して Windows 11 バージョン 22H2 EWDK (2023 年 10 月 24 日リリース) をダウンロードしても使用できます。 SDV を実行する Enterprise WDK のみを使用することをお勧めします。 古いバージョンの標準 WDK を Visual Studio の最近のリリースと組み合わせて使用することはお勧めしません。これにより、分析エラーが発生する可能性があります。
今後、CodeQL はドライバーの主要な静的分析ツールになります。 CodeQL には、クエリ対象のデータベースとしてコードを扱う強力なクエリ言語が用意されているため、特定の動作やパターンなどに対するクエリを簡単に記述できます。
CodeQL の使用方法の詳細については、「 CodeQL と静的ツールのロゴ テスト」を参照してください。
静的ドライバー検証ツールのインストール
静的ドライバー検証ツールは、完全な WDK エクスペリエンスとスタンドアロン Enterprise WDK の両方で、Windows ドライバー キット (WDK) の一部として使用できます。 さらに、SDV を実行するには、Visual Studio 用の Visual C++ 再頒布可能パッケージが必要です。 以下をご覧ください。
Visual Studio の統合
静的ドライバー検証ツールは Visual Studio に統合されています。 Visual Studio ドライバー プロジェクトで静的分析を実行できます。 Visual Studio の [ ドライバー] メニュー から、静的ドライバー検証ツールを起動、構成、および制御できます。
静的ドライバー検証ツールのドキュメント
- 静的ドライバー検証ツールの既知の問題: 静的ドライバー検証ツールの最新の既知の問題の一覧
- 静的ドライバー検証ツールを使用してドライバーの欠陥を見つける: Visual Studio 環境でドライバー コードの分析を開始するために必要なものを示します。
- 静的ドライバー検証ツール コマンド (MSBuild):Visual Studio コマンド プロンプト ウィンドウで SDV を実行するために使用する MSBuild コマンドを一覧表示します。
- 静的ドライバー検証ツールの概要: 静的分析ツールの概要について説明します。
- 静的ドライバー検証ツールの使用: 静的分析ツールの使用と構成の詳細について説明します。
- 静的ドライバー検証ツール レポート: 静的コード分析の詳細なトレースを表示するビューアーについて説明します。
- 静的ドライバー検証ツールの規則: 規則は、ドライバー モデルとオペレーティング システムのカーネル インターフェイス間の適切な相互作用の要件を定義します。
- 静的ドライバー検証ツール リファレンス: 関数の役割の種類、SDV 構成ファイル、エラー、および警告メッセージに関する参照情報を提供します。
Windows ドライバー コードでのバグの検出
Microsoft では、SDV を使用して、Microsoft Windows オペレーティング システムに含まれているカーネル モード ドライバーをテストし、WDK のサンプル ドライバーをテストします。 特定のドライバー モデルに対して DDI コンプライアンス規則を使用することで、SDV は正しいドライバーの動作を確認できます。 たとえば、SDV はドライバーが次のことを確認できます。
- 正しい IRQL で関数を呼び出す
- 正しいシーケンスでロックを取得および解放します
- I/O 要求パケット (IRP) を処理する関数を正しく使用する
SDV は、ドライバー コードを通じてすべての可能なパスを調べます。 これは、徹底的なテストでも遭遇する可能性が低いあいまいなパスで重大なエラーを見つけるために設計されています。
その他のリソース
SDV で検証できるドライバーの詳細については、「サポートされているドライバー」を参照してください。
静的ドライバー検証ツールの使用に関する詳細とヒントについては、次を参照してください。