フレームワークベースのドライバーをデバッグするためのレジストリ値

次のレジストリ値は、レジストリの Services ツリーの下にあるフレームワークベース ドライバーの Parameters\Wdf サブキーの下に追加できます。

  • VerifierOn (REG_DWORD)
    0 以外の値に設定すると、フレームワークのコード検証ツールが有効になります。このツールは、ドライバーの状態と関数パラメーターを広範囲にわたって検証します。ドライバーの開発時には、VerifierOnDbgBreakOnError を設定する必要があります。

  • VerifyOn (REG_DWORD)
    0 以外の値に設定すると、Wdfassert.h で定義されている WDFVERIFY マクロが有効になり、0 に設定すると、このマクロが無効になります。VerifierOn 値を設定すると、VerifyOn が自動的に 0 以外の値に設定されます。

  • DbgBreakOnError (REG_DWORD)
    0 以外の値に設定すると、ドライバーが WdfVerifierDbgBreakPoint を呼び出したときに、 フレームワークがデバッガーに割り込みを行います (VerifierOn 値が設定されている場合、フレームワークは DbgBreakOnError 値が設定されていない場合でもデバッガーに割り込みを行います)。

  • VerifierAllocateFailCount (REG_DWORD)
    このレジストリ値が値 n に設定されており、かつ VerifierOn が設定されている場合、ドライバーのオブジェクトに対する n 回目のメモリ割り当ての後に試行される同オブジェクトへのメモリ割り当てが、すべてエラーになります。このエラーは、ドライバーによる低メモリ状況の処理のテストに役立ちます。たとえば、VerifierAllocateFailCount を 2 に設定した場合、3 回目以降のメモリ割り当てがすべてエラーになります。VerifierAllocateFailCount の既定値は 0xffffffff です。

    検証ツールでは、ドライバーが要求した割り当ての数と、フレームワークがドライバーに代わって要求した割り当ての数の両方がカウントされます。また、ドライバーに代わって行われる割り当ての数は、フレームワークのリリースによって異なる場合があります。

  • TrackHandles (REG_MULTI_SZ)
    このレジストリ値がフレームワーク オブジェクト ハンドルの 1 つ以上の型名のリストに設定されており、かつ VerifierOn が設定されている場合、フレームワークは、指定されたハンドル型と一致するすべてのオブジェクト ハンドルへの参照をトラックします。たとえば、ハンドル型のリストに "WDFREQUEST WDFQUEUE" という文字列が含まれている場合、フレームワークは、すべての要求オブジェクトおよびキュー オブジェクトへの参照をトラックします。リストにアスタリスク ("*") が含まれている場合、フレームワークはすべてのオブジェクト ハンドルをトラックします。

  • VerboseOn (REG_DWORD)
    0 以外の値に設定すると、フレームワークのイベント ロガーが、ドライバーのデバッグに役立つ可能性のある追加情報 (内部コード パスに対する入力や同パスから削除されるコードなど) を記録します。この値の設定は、ドライバーの開発時のみに限定する必要があります。

  • LogPages (REG_DWORD)
    フレームワークがイベント ロガーに割り当てるメモリ ページ数を設定します。値が未定義の場合、フレームワークは既定値 (1 ページ) を使用します。設定できる最大値は、メモリ ページのサイズが 4 KB のコンピューター (x86 プロセッサおよび amd64 プロセッサ) では 16、メモリ ページのサイズが 8 KB のコンピューター (ia64 プロセッサ) では 8 です (多くのページ数を指定すると、オペレーティング システムがログ内容をクラッシュ ダンプ ファイルに書き込まない可能性があります)。

  • ForceLogsInMiniDump (REG_DWORD)
    0 以外の値に設定すると、フレームワークがイベント ロガーからの情報をクラッシュ ダンプ ファイルに書き込みます。

  • TraceDelayTime (REG_DWORD)
    Microsoft Windows 2000 でのみ使用します。0 以外の値に設定すると、WPP ソフトウェア トレースの初期化時に遅延を発生させることができます。値はミリ秒単位で指定しますが、有効な値は 1000 (1 秒) です。この遅延を設定しない場合、WPP トレースの冒頭部分が欠落する可能性があります。

  • EnhancedVerifierOptions (REG_DWORD)
    この値にはビットマップが格納されます。各ビットは、ユーザーがビットを設定することによって有効化できる追加の検証ツールを表します。

    ビット値は次のとおりです**。

    0x1:この値を設定した場合、検証ツールは、ドライバーのイベント コールバック関数が次の処理を行うかどうかをチェックします。

    • 呼び出し時と同じ IRQL で制御を戻すかどうか。値が異なる場合、WDF_VIOLATION バグ チェックがエラー コード 0xE で実行されます。

    • 制御を戻す前に、すべてのクリティカル領域から移動するかどうか。コールバック関数がクリティカル領域から移動せずに制御を戻した場合、WDF_VIOLATION バグ チェックがエラー コード 0xF で実行されます。

    0x10000: この値が設定されており、ドライバーが I/O キューの保証進行機能を有効にしている場合、フレームワークは、キューの各 I/O 要求について、低メモリ状況をシミュレートします。

    0x20000: この値が設定されており、ドライバーが I/O キューの保証進行機能を有効にしている場合、フレームワークは、ランダムに選択したいくつかの I/O 要求について、低メモリ状況をシミュレートします。

    この値は、フレームワークの Version 1.9 以降で使用できます。

  • VerifyDownLevel (DWORD)
    0 以外の値に設定されており、ドライバーが現在のバージョンよりも前のバージョンのフレームワークを使用してビルドされている場合、フレームワークの検証ツールは、ドライバーのビルド時以降に追加されたテストを追加で実行します。この値が設定されていないか、0 に設定されている場合、フレームワークの検証ツールは、ドライバーのビルド時に存在していたテストだけを実行します。

    たとえば、ドライバーが Version 1.7 のフレームワークを使用してビルドされており、コンピューターに Version 1.9 のフレームワークがインストールされている場合、VerifyDownLevel を 0 以外の値に設定すると、ドライバーの実行時に、Version 1.9 で追加されたテストが検証ツールによって追加で実行されます。

    この値は、フレームワークの Version 1.9 以降で使用できます。

 

次のレジストリ値は、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Wdf\Kmdf\Diagnostics レジストリ キーの下に追加できます。

  • DbgPrintOn (REG_DWORD)
    0 以外の値に設定すると、フレームワークのローダーは、ドライバーを読み込んでフレームワーク ライブラリの特定のバージョンにバインドするとき、またはドライバーをアンロードするときに、さまざまなメッセージをカーネル デバッガーに送信します。

 

レジストリに値が定義されていない場合、フレームワークは既定値 0 を使用します。