ドライバー パッケージ プロジェクトのドライバーの検証ツール プロパティ
ドライバーの検証ツールは、ドライバーのテストの効果を高める、実行時検証ツールです。 ドライバーの検証ツールを有効化して構成し、ドライバーをテスト用に展開するときにすべてのテスト コンピューター上で実行されるようにすることができます。
リモート テスト コンピューターでドライバーの検証ツールを有効にする場合は、常にテスト コンピューターとのカーネル モード デバッグ接続をセットアップする必要があります。ターゲット コンピューターの構成と、デバッグ ケーブルの設定について詳しくは、「Visual Studio でのカーネル モード デバッグの設定」をご覧ください。
ドライバー パッケージ プロジェクトのドライバーの検証ツール プロパティの設定
- ドライバー パッケージのプロパティ ページを開きます。ソリューション エクスプローラーでドライバー パッケージ プロジェクトを右クリックし、[プロパティ] をクリックします。
- ドライバー パッケージのプロパティ ページで、[構成プロパティ]、[Driver Install] (ドライバーのインストール)、[Driver Verification] (ドライバーの検証) の順にクリックします。
- [Enable Driver Verification] (ドライバーの検証を有効にする) をオンにします。このオプションがオンになっている場合は、テスト コンピューターで検証するドライバーと使用するドライバー検証ツールを選ぶことができます。
プロジェクト構成とプラットフォーム
構成一覧とプラットフォーム一覧を使うと、さまざまなプロジェクト構成とプラットフォームの組み合わせに、さまざまな展開の設定を適用できます。たとえば、1 台のテスト コンピューターにはデバッグ用ビルドのための展開オプションのセットを使ってドライバーを展開し、別のテスト コンピューターにはリリース用ビルドのための展開オプションを使うことができます。
Enable Driver Verifier (ドライバーの検証ツールの有効化)
テスト コンピューター上でのドライバーの検証ツールの有効化は、コンピューターのすべてのドライバーを対象にしたり、ドライバー プロジェクトだけを対象にしたり、一覧で指定されたドライバーを対象にしたりすることができます。たとえば、特定のデバイスのスタックにあるドライバーのセットに対して、ドライバーの検証ツールを有効にしたい場合があります。
Verify Drivers (ドライバーの検証)
テスト コンピューター上のどのドライバーを検証するかを指定します。
[All Drivers] (すべてのドライバー)
ドライバーの検証ツールが、リモート テスト コンピューターにインストールされているすべてのドライバーを検証するように指定します。Project Output (プロジェクトの出力)
ドライバーの検証ツールが、リモート テスト コンピューターにインストールされているドライバー プロジェクトを検証するように指定します。これは既定のオプションです。Driver List (ドライバーの一覧)
ドライバーの検証ツールがリモート テスト コンピューター上で検証するドライバー、またはドライバーの一覧を指定します。たとえば、特定のデバイスに関連付けられているすべてのドライバーの一覧を作ることができます。ドライバーの指定は、バイナリ名で行います (たとえば Driver.sys)。 ドライバーの一覧は、セミコロンで区切ります。 ワイルドカード値 (たとえば、n*.sys) は、サポートされていません。
ドライバーの検証ツールの標準フラグ
テスト コンピューター上で、ドライバーの検証ツールの次のオプションを構成できます。
DDI 準拠の検査 (Windows 8)
このオプションがアクティブになっていると、ドライバーの検証ツールはドライバーとオペレーティング システムのカーネル インターフェイスとの適切なやり取りをチェックするデバイス ドライバー インターフェイス (DDI) ルールのセットを適用します。
-
このオプションがアクティブになっていると、ドライバーの検証ツールはドライバーによるスピン ロック、ミューテックス、速いミューテックスの使用を監視します。これによって、ある時点でドライバーのコードがデッドロックを引き起こす可能性があるかどうかが検出されます。
-
このオプションがアクティブになっていると、ドライバーの検証ツールはドライバーによる DMA (ダイレクト メモリ アクセス) ルーチンの使用を監視します。これによって、DMA バッファー、アダプター、マップ レジスタの不適切な使用が検出されます。
-
このオプションがアクティブになっていると、ドライバーの検証ツールはページングが可能なコードを無効にして、ドライバーを極端にメモリ不足の状態にします。ドライバーが不適切な IRQL で、またはスピン ロックを保持したままでページ メモリにアクセスしようとすると、ドライバーの検証ツールはこの動作を検出します。
-
このオプションがアクティブになっていると、ドライバーの検証ツールはドライバーの IRP (割り込み要求パケット) を特別なプールから割り当て、ドライバーの I/O 処理を監視します。これによって、I/O ルーチンの不適切な使用や不整合な使用が検出されます。ドライバーの検証ツールは、I/O マネージャーのルーチンの呼び出しも監視し、PnP (プラグ アンド プレイ) IRP、Power IRP、WMI IRP のストレス テストを実行します。
-
このオプションがアクティブになっていると、ドライバーの検証ツールはドライバーのクラッシュの一般的な原因 (解放したメモリの誤った処理など) を探します。
-
このオプションがアクティブになっていると、ドライバーの検証ツールは、ドライバーがアンロードされるときにすべてのメモリ割り当てが解放されたかどうかをチェックします。これによってメモリ リークが明らかになります。
-
このオプションがアクティブになっていると、ドライバーの検証ツールはセキュリティの脆弱性につながるような一般的なエラー (カーネル モードのルーチンによるユーザー モードのアドレスの参照など) を探します。
-
このオプションがアクティブになっていると、ドライバーの検証ツールはほとんどのドライバーのメモリ要求を特別なプールから割り当てます。この特別なプールでは、メモリ オーバーラン、メモリ アンダーラン、既に解放されたメモリへのアクセスが監視されます。
ドライバーの検証ツールのシナリオ固有の設定
-
このオプションがアクティブになっていると、ドライバーの検証ツールはプール割り当て要求やその他のリソース要求をランダムに失敗させます。システムでこれらの割り当てエラーを引き起こすことで、ドライバーの検証ツールはリソース不足の状況でのドライバーの能力をテストします。
-
このオプションがアクティブになっていると、ドライバーの検証ツールはランダムな IoCallDriver の呼び出しに STATUS_PENDING を返すことによって、STATUS_PENDING 戻り値へのドライバーの応答をテストします。
-
このオプションがアクティブになっていると、ドライバーの検証ツールはドライバーによる IRP の使用を監視し、IRP の使用のログを作成します。
不変な MDL のスタック用検査 (Windows 8)
"不変な MDL のスタック用検査" は、不変の MDL バッファーがドライバーでどのように処理されているかをドライバー スタック全体を対象に監視するオプションです。 不変の MDL バッファーに対する無効な改変が、ドライバーの検証ツールによって検出されます。 このオプションを使うには、少なくとも 1 つのドライバーで I/O の検証を有効にする必要があります。
不変な MDL のドライバー用検査 (Windows 8)
"不変な MDL のドライバー用検査" は、不変の MDL バッファーがドライバーでどのように処理されているかをドライバー単位で監視するオプションです。 不変の MDL バッファーに対する無効な改変が、このオプションによって検出されます。 このオプションを使うには、少なくとも 1 つのドライバーで I/O の検証を有効にする必要があります。
Power Framework 遅延ファジー テスト (Windows 8)
このオプションがアクティブになっていると、ドライバーの検証ツールはスレッド スケジュールをランダム化して、ドライバーの同時エラーを検出できるようにします。
スタック ベースのエラー挿入 (Windows 8)
スタック ベースのエラー挿入オプションは、カーネル モードのドライバーにリソース エラーを挿入します。このオプションは、特別なドライバーである KmAutoFail.sys とドライバーの検証ツールを使って、ドライバーのエラー処理パスに入り込みます。
注 スタック ベースのエラー挿入と低リソースのシミュレーションを組み合わせることはできません。
I/O の検証を必要とするドライバーの検証ツールのオプション
先に I/O の検証を有効にする必要がある 4 つのオプションがあります。 I/O の検証が有効化されていない場合は、これらのオプションも有効になりません。
関連トピック
Visual Studio を使って実行時にドライバーをテストする方法