Windows ドライバー キット (WDK) をインストールするか、Enterprise Windows Driver Kit (EWDK) を実行して、 Visual Studio コマンド プロンプト ウィンドウで静的ドライバー検証ツール (SDV) を実行できます。 ドライバーのプロジェクト ファイルまたはライブラリのプロジェクト ファイルが格納されているディレクトリに移動します。 パラメーターは、コマンド ライン上の任意の順序で表示できます。
Important
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 と静的ツールのロゴ テスト」を参照してください。
msbuild /t:sdv /p:Inputs="Parameters" ProjectFile /p:Configuration=configuration /p:Platform=platform
リリース構成 (例: /p:Configuration="Windows 7 リリース") を選択する必要があります。 サポートされているリリース構成の一覧については、「ドライバーの ビルド」を参照してください。 プラットフォームには、 Win32 (x86 の場合) または x64 ( /p:Platform=Win32 など) を指定できます。
Note
分析中にコンピューターがスリープ状態にならないことを確認するには、必ずコンピューターの電源管理計画を確認してください。
Parameters
/scan
ドライバーのソース コードで関数ロールの型宣言をスキャンします。 ドライバーによって提供されるコールバック関数とディスパッチ ルーチンを宣言する方法については、「 関数ロール型宣言の使用」を参照してください。 このスキャン中に、SDV は、ドライバーを検証する必要があるドライバーエントリ ポイントを検出しようとします。 スキャンの結果は、ドライバーのプロジェクト ディレクトリに作成される ファイルである Sdv-map.h に記録されます。
詳細については、「 ソース コードの準備」を参照してください。
/check:<em>Rule</em> |Rule,...
指定したルールで検証を開始します。 各ルールをコンマで区切ることで、複数のルールを指定できます。 /check: コマンドを実行し、ドライバーの Visual Studio プロジェクト ファイル (*.vcxproj) を指定します。
Rule は、1 つ以上の文字を表すワイルドカード文字 (*) を含む 1 つの ルール またはルール名パターンの名前です。 単独で使用する場合、ワイルドカード文字 (*) はすべてのルールを表します。
/check:RuleList.sdv
指定したルール リスト ファイル内のルールを使用して検証を開始します。 このパラメーターを使用して一覧表示できるファイルは 1 つだけです。 ルール リスト ファイルでは、各行に 1 つのルールの名前を指定することも、すべての SDV ルールを表すワイルドカード文字 (*) を使用することもできます。 /check:RuleList.sdv コマンドを実行し、ドライバーの Visual Studio プロジェクト ファイル (*.vcxproj) を指定します。
RuleList.sdv は、ルール リスト ファイルの完全修飾パスとファイル名です。 ファイル名拡張子が .sdv である必要があります。 ファイルがローカル ディレクトリに含まれている場合を除き、パスが必要です。 パスまたはファイル名にスペースが含まれている場合は、RuleList を囲む必要があります。引用符で囲んだ sdv。
規則を指定せずに /check: オプションを指定した場合、SDV はドライバー モデルの既定の規則セットを使用して実行されます。
/lib
現在のディレクトリ内のライブラリを処理します。 SDV は MSBuild.exe を呼び出して外部で使用するためにライブラリをコンパイルしてビルドし、ドライバー検証にライブラリを含める必要があるファイルを生成します。
ライブラリを必要とするドライバーを確認する前に、このパラメーターを使用します。 msbuild /t:sdv /p:Inputs="/lib" コマンドを実行し、ライブラリの Visual Studio プロジェクト ファイル (*.vcxproj) を指定します。
/lib パラメーターの使用方法と効果の詳細については、「静的ドライバー検証ツールでのライブラリ処理」を参照してください。
/view
静的ドライバー検証ツールを開きます。 /view コマンドを実行し、ドライバーの Visual Studio プロジェクト ファイル (*.vcxproj) を指定します。
結果は検証が完了するとすぐに使用でき、 /clean コマンドを使用してドライバーのプロジェクト ディレクトリから SDV ファイルを削除するまで使用できます。
/clean
ディレクトリから SDV ファイルを削除します。 これらのファイルは静的ドライバー検証ツール レポートの表示を生成するために使用されるため、 /clean コマンドは検証のレポートも削除します。
/clean コマンドを実行し、ドライバーまたはライブラリの Visual Studio プロジェクト ファイル (*.vcxproj) を指定します。 このコマンドは、指定されたプロジェクトの SDV ファイルのみを削除します。
各検証の前に、ドライバー プロジェクトの /clean コマンドを実行します。
ライブラリ コードが変更されたときなど、ライブラリ ファイルが古い場合は、ライブラリに 対して /clean コマンドを実行します。
承認されたフラグが Sdv-map.h ファイル (Approved=true) で true に設定されている場合、 /clean コマンドは Sdv-map.h ファイルを削除しません。 その後、SDV は今後の検証にこのファイルを使用できます。
/?
SDV コマンドの使用状況を表示します。 このパラメーターを使用するコマンドは、ビルド環境ウィンドウで実行する必要はありません。
Comments
パラメーターを指定せずに msbuild /t:/sdv p:/Inputs= /? を実行すると、SDV コマンドの使用状況が表示されます。
/clean コマンドは、SDV が検証用の静的ドライバー検証ツール レポートの表示を作成するために使用するファイルを削除します。 このコマンドを実行すると、検証用の静的ドライバー検証ツール レポートの表示は使用できなくなります。
Examples
mydriver プロジェクトのローカル ディレクトリ内のドライバー ファイルのすべての規則を使用して SDV を実行するには:
msbuild /t:sdv /p:Inputs="/check:*" mydriver.VcxProj /p:Configuration="Windows 7 Release"/p:Platform=Win32
ローカル ディレクトリ内のドライバー ファイルに 対して CancelSpinLock ルールを使用して SDV を実行するには:
msbuild /t:sdv /p:Inputs="/check:CancelSpinLock" mydriver.VcxProj /p:Configuration="Windows 7 Release" /p:Platform=Win32
D:\SDV ディレクトリの Rules1.sdv 規則リスト ファイルで指定されている規則を使用して SDV を実行するには:
msbuild /t:sdv /p:Inputs="/check:D:\SDV\Rules1.sdv" mydriver.VcxProj /p:Configuration="Windows 7 Release" /p:Platform=Win32
SDV を再度実行するには、今度は /clean オプションを使用します。
msbuild /t:sdv /p:Inputs="/clean" mydriver.VcxProj /p:Configuration="Windows 7 Release"/p:Platform=Win32
ローカル ディレクトリでドライバーの最新の検証の結果を表示できるように、静的ドライバー検証ツールを表示するには:
msbuild /t:sdv /p:Inputs="/view" mydriver.VcxProj /p:Configuration="Windows 7 Release" /p:Platform=Win32