次の方法で共有


静的ドライバー検証ツールのコマンド (MSBuild)

Windows Driver Kit (WDK)をインストールするか、Enterprise Windows Driver Kit (EWDK)を実行することにより、Visual Studio コマンド プロンプトウィンドウで静的ドライバー検証ツール(SDV)を実行できます。 ドライバーのプロジェクト ファイルまたはライブラリのプロジェクト ファイルが保存されているディレクトリに移動します。 パラメーターはコマンド ライン上で任意の順序で指定できます。

重要

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 と静的ツール ロゴ テストを参照してください。

msbuild /t:sdv /p:Inputs="Parameters" ProjectFile /p:Configuration=configuration /p:Platform=platform

リリース構成を選択する必要があります (例: /p:Configuration="Windows 7 Release")。 サポートされているリリース構成のリストについては、ドライバーの建築を参照してください。 プラットフォームはWin32 (x86の場合) または x64 (たとえば、/p:Platform=Win32) です。

Note

分析中にコンピューターがスリープ状態にならないように、コンピューターの電源管理計画を必ず確認してください。

パラメーター

/scan

ドライバーのソースコードをスキャンして、関数の役割の型宣言を探します。 ドライバーが提供するコールバック関数とディスパッチ ルーチンを宣言する方法については、関数ロール型宣言の使用を参照してください。 このスキャン中に、SDVはドライバーを検証するために必要なドライバーエントリポイントの検出を試みます。 スキャンの結果は、ドライバーのプロジェクトディレクトリに作成されるファイル Sdv-map.h に記録されます。

詳細については、ソースコードの準備を参照してください。

/check:ルール | ルール、...

指定されたルールで検証を開始します。 各ルールをカンマで区切ることにより、複数のルールを指定できます。 /check: コマンドを実行し、ドライバーの Visual Studio プロジェクトファイル (*.vcxproj) を指定します。

ルールは、1つのルールの名前、または1つ以上の文字を表すワイルドカード文字 (*) を含むルール名パターンです。 ワイルドカード文字 (*) を単独で使用すると、すべてのルールを表します。

/check:ルールリスト.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 パラメーターの使用と効果の詳細については、Static Driver Verifierでのライブラリ処理を参照してください。

/ビュー

静的ドライバー検証ツールを開きます。 /view コマンドを実行し、ドライバーの Visual Studio のプロジェクトファイル (*.vcxproj) を指定します。

結果は検証が完了するとすぐに利用可能になり、/cleanコマンドを使用してドライバーのプロジェクト ディレクトリから SDV ファイルを削除するまで利用可能なままになります。

/クリーン

SDV ファイルをディレクトリから削除します。 これらのファイルは静的ドライバー検証レポート表示の生成に使用されるため、/cleanコマンドは検証のレポートも削除します。

/clean コマンドを実行し、ドライバーまたはライブラリの Visual Studio のプロジェクト ファイル (*.vcxproj) を指定します。 このコマンドは、指定されたプロジェクトの SDV ファイルのみを削除します。

各検証の前に、ドライバー プロジェクトに対して /cleanコマンドを実行します。

ライブラリ コードが変更された場合など、ライブラリ ファイルが古くなった場合は、ライブラリに対して /cleanコマンドを実行します。

Sdv-map.h ファイルで承認済みフラグが true に設定されている (Approved=true) 場合、/cleanコマンドは Sdv-map.h ファイルを削除しません。 SDV は、このファイルを今後の検証に使用できます。

/?

SDVコマンドの使用法を表示します。 このパラメーターを使用するコマンドは、ビルド環境ウィンドウで実行する必要はありません。

Comments

msbuild /t:/sdv p:/Inputs= /? を実行しています。パラメーターを指定しないと、SDVコマンドの使用法が表示されます。

/cleanコマンドは、SDV が検証用の Static Driver Verifierのレポート表示を作成するために使用するファイルを削除します。 このコマンドを実行すると、検証用のStatic Driver Verifier Report表示が利用できなくなります。

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

Windows ドライバーの不具合を見つけるための静的ドライバー検証ツールの使用