体系的な低リソース シミュレーション オプションは、カーネル モード ドライバーでリソースの障害を挿入します。 このオプションは、ドライバー エラー処理パスに侵入します。 これらのパスのテストは、これまで非常に困難でした。 体系的な低リソース シミュレーション オプションでは、予測可能な方法でリソースエラーが挿入されるため、検出された問題が再現可能になります。 エラー パスは簡単に再現できるため、これらの問題の修正を簡単に確認できます。
エラーの根本原因を特定するために、挿入されたエラーとその順序を正確に示すデバッガー拡張機能が用意されています。
注意 このオプションは、コンピューター上のすべてのドライバー (または大規模なコレクション) を検証する場合には使用できません。 このオプションは、個々のドライバーまたはその添付フィルター ドライバーの対象テストを行う場合にのみ使用する必要があります。 多数のドライバーでこのオプションを同時に使用すると、予期しない結果が発生する可能性があり、テスト対象のドライバーとは無関係のコンポーネントでクラッシュが発生する可能性があります。
手記 Windows 8.1 では、WDK 8 で利用できた スタック ベースの障害挿入 機能がドライバー検証ツールに統合されています。 Windows 8.1 を実行しているコンピューターでは、体系的な低リソース シミュレーション オプションを使用します。
特定のドライバーで体系的な低リソース シミュレーション オプションが有効になっている場合、そのドライバーからカーネルへの呼び出しをインターセプトし、Ndis.sysします。 体系的な低リソース シミュレーションでは、呼び出し履歴 (具体的には、有効になっているドライバーから取得される呼び出し履歴の部分) が確認されます。 これが初めてそのスタックを見た場合、その呼び出しのセマンティクスに従って呼び出しが失敗します。 それ以外の場合は、以前にその呼び出しが見られた場合は、そのまま渡されます。 体系的な低リソース シミュレーションには、ドライバーを複数回読み込んでアンロードできるという事実に対処するためのロジックが含まれています。 ドライバーが別のメモリ位置に再読み込みされた場合でも、呼び出し履歴が同じであることを認識します。
このオプションのアクティブ化
Driver Verifier Manager または Verifier.exe コマンド ラインを使用して、1 つ以上のドライバーの体系的な低リソース シミュレーション機能をアクティブ化できます。 詳細については、「 ドライバー検証ツールオプションの選択」を参照してください。 システム低リソース シミュレーション オプションをアクティブ化または非アクティブ化するには、コンピューターを再起動する必要があります。
コマンド ラインで
Windows 11
コマンド ラインでは、体系的な低リソース シミュレーションは 検証者 /rc 19 36 または 検証者 /dif 19 で表され、両方に必要な DIF モードが含まれます。
この機能は、次の起動時にアクティブになります。または、コマンド文字列に /now が追加された場合は直ちにアクティブになります。
Windows 10 以下
コマンド ラインでは、体系的な低リソース シミュレーションは 、検証ツール /flags 0x040000 (ビット 18) で表されます。 体系的な低リソース シミュレーションを行うには、フラグ値0x040000使用するか、フラグ値に0x040000を追加します。 例えば次が挙げられます。
verifier /flags 0x040000 /driver MyDriver.sys
この機能は、次の起動時にアクティブになります。
全般
系統的低リソース シミュレーション オプションを有効にすると、 /faultssystematicOPTION コマンド ライン オプションを使用して、体系的な低リソース シミュレーションをさらに制御できます。
オプション 説明 enableboottime(エネーブルブートタイム)
コンピューターの再起動中に障害の挿入を有効にします。
disableboottime(ブート時の無効化)
コンピューターの再起動の間の障害の挿入を無効にします (これが既定の設定です)。
ブート時間を記録する
コンピューターの再起動間で what if モードで障害挿入を有効にします。
resetboottime (ブートタイムのリセット)
コンピューターの再起動間の障害挿入を無効にし、スタック除外リストをクリアします。
enableruntime
障害注入を動的に有効化します。
disableruntime
フォルトインジェクションを動的に無効にします。
記録時間
what if モードで障害挿入を動的に有効にします。
リセットランタイム
障害挿入を動的に無効にし、以前に障害が発生したスタック リストをクリアします。
querystatistics
現在の障害挿入統計を表示します。
インクリメントカウンター
エラーが挿入されたタイミングを識別するために使用されるテスト パス カウンターをインクリメントします。
getstackid COUNTER
指定された挿入されたスタック識別子を取得します。
excludestack STACKID
障害の挿入からスタックを除外します。
ドライバー検証ツール マネージャーの使用
- ドライバー検証ツール マネージャーを起動します。 コマンド プロンプト ウィンドウに 「Verifier 」と入力します。
- (コード開発者向けの) [カスタム設定の作成] を選択し、[次へ] をクリックします。
- 完全な一覧から [個々の設定を選択] を選択します。
- 体系的な低リソース シミュレーションを選択 (チェック) します。
- コンピューターを再起動します。
体系的な低リソース シミュレーションによるバグ チェックのデバッグ
体系的な低リソース シミュレーションで見つかった問題のほとんどは、バグ チェックになります。 これらのコード バグの原因を特定するために、 Debugging Tools for Windows にはデバッガー拡張機能 (kdexts.dll) と必要なシンボルが用意されています。
デバッガー拡張機能を実行するには
デバッガーのコマンド プロンプトで、次のコマンドを入力します。
!verifier 0x800
これにより、挿入された最新のエラーからの呼び出し履歴を示す情報がデバッガーにダンプされます。