静的ドライバー検証ツール
静的ドライバー検証ツール (「StaticDV」または「SDV」とも呼ばれます) は、Windows カーネル モードのドライバーのソース コードを系統的に分析する静的検証ツールです。 SDV は、ドライバーの欠陥や設計上の問題を検出できるコンパイル時ツールです。 SDV は、一連のインターフェイス ルールとオペレーティング システムのモデルに基づいて、ドライバーが Windows オペレーティング システムカーネルと正しくやり取りしているかどうかを判断します。
重要
SDV はサポートされなくなり、Windows 24H2 WDK または EWDK リリースでは SDV を使用できません。 ビルド 26017 より新しい WDK では使用できません。また、Windows 24H2 RTM WDK には含まれていません。
SDV は、Windows 11 バージョン 22H2 EWDK (2023 年 10 月 24 日リリース) と Visual Studio ビルド ツール 17.1.5 を からダウンロードすることで引き続き使用。 SDV を実行する Enterprise WDK のみを使用することをお勧めします。 古いバージョンの標準 WDK を Visual Studio の最近のリリースと組み合わせて使用することはお勧めしません。これにより、分析エラーが発生する可能性があります。
今後、CodeQL はドライバーの主要な静的分析ツールになります。 CodeQL には、クエリ対象のデータベースとしてコードを扱う強力なクエリ言語が用意されているため、特定の動作やパターンなどに対するクエリを簡単に記述できます。
CodeQL の使用方法の詳細については、「 CodeQL と静的ツール ロゴ テストを参照してください。
静的ドライバー検証ツールのインストール
静的ドライバー検証ツールは、Windows Driver Kit (WDK) の一部として、完全な WDK 体験版とスタンドアロンの Enterprise WDK の両方で利用できます。 また、SDV を実行するには、Visual Studio 用の Visual C++ 再頒布可能パッケージ パッケージが必要です。 以下を参照してください:
- Visual Studio 2019 の再配布
- Visual Studio 2017 の Visual C++ 再頒布可能パッケージ
- Visual Studio 2013 向け Visual C++ 再頒布可能パッケージ
Windows 10 バージョン 1809 またはそれ以前の WDK で使用可能な SDV のバージョンでは、2017 パッケージの代わりに Visual Studio 2012 の 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 で検証できるドライバーの詳細については、「サポートされているドライバー」を参照してください。
静的ドライバー検証ツールの使用に関する詳細とヒントについては、次を参照してください。