キーボードからのシステム クラッシュの強制

次の種類のキーボードを使用すると、システムが直接クラッシュする可能性があります。

  • i8042prt ポートに接続されている PS/2 キーボード この機能は、Windows 2000 以降のバージョンの Windows オペレーティング システムで使用できます。

  • USB キーボード
    この機能は、Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。

  • Hyper-V キーボード
    この機能は、Windows 10 バージョン 1903 以降のバージョンの Windows オペレーティング システムで使用できます。

構成

キーボードを使用してシステム クラッシュを有効にするには、次の設定を構成します。

  1. クラッシュ ダンプ ファイルを書き込む場合は、そのようなダンプ ファイルを有効にする必要があります。 パスとファイル名を選択し、ダンプ ファイルのサイズを選択します。 詳細については、「 カーネル モード ダンプ ファイルの有効化」を参照してください。

  2. PS/2 キーボードでは、レジストリでキーボードによって開始されるクラッシュを有効にする必要があります。 レジストリ キー HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parametersで、 という名前 CrashOnCtrlScrollの値を作成し、それを 0x01 の値と同じに REG_DWORD 設定します。

  3. USB キーボードでは、レジストリでキーボードによって開始されるクラッシュを有効にする必要があります。 レジストリ キー HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parametersで、 という名前 CrashOnCtrlScrollの値を作成し、それを 0x01 の値と同じに REG_DWORD 設定します。

  4. Hyper-V キーボードでは、レジストリでキーボードによって開始されるクラッシュを有効にする必要があります。 レジストリ キー HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\hyperkbd\Parametersで、 という名前 CrashOnCtrlScrollの値を作成し、それを 0x01 の値と同じに REG_DWORD 設定します。

一部のラップトップでは、組み込みのキーボード用の PS/2 ドライバーを使用し、外部 HID キーボードもサポートしています。 これらのシステムでは、いずれかのキーボードを使用できるように、USB と PS/2 の両方のレジストリ キーを作成することを検討してください。

これらの設定を有効にするには、システムを再起動する必要があります。

再起動が完了すると、次のホットキー シーケンスを使用してキーボードのクラッシュを開始できます。右端の Ctrl キーを押しながら SCROLL LOCK キーを 2 回押します。

その後、システムは バグ チェック 0xE2: MANUALLY_INITIATED_CRASH を呼び出KeBugCheckして発行します。 クラッシュ ダンプが無効になっていない限り、クラッシュ ダンプ ファイルが書き込まれます。

クラッシュしたマシンにカーネル デバッガーがアタッチされている場合、クラッシュ ダンプ ファイルが書き込まれた後、マシンはカーネル デバッガーに分割されます。

キーボードからシステムを強制的にクラッシュさせる代替キーボード ショートカットの定義

次のレジストリ サブキーで、キーボード ショートカット シーケンスの代替値を構成して、メモリ ダンプ ファイルを生成できます。

  • PS/2 キーボードの場合:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\crashdump

  • USB キーボードの場合:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\crashdump

  • Hyper-V キーボードの場合:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hyperkbd\crashdump

これらのサブキーの下に、次のレジストリ REG_DWORD 値を作成する必要があります。

Dump1Keys

Dump1Keysレジストリ値は、使用する最初のホットキーのビット マップです。 たとえば、右端の Ctrl キーを使用してホットキー シーケンスを開始する代わりに、最初のホットキーを左端の Shift キーに設定できます。

最初のホット キーの値を次の表に示します。

キーボード ショートカット シーケンスで使用される最初のキー
0x01 右端の Shift キー
0x02 右端の Ctrl キー
0x04 右端の Alt キー
0x10 左端の Shift キー
0x20 左端の Ctrl キー
0x40 左端の Alt キー

キーボード ショートカット シーケンスで使用される最初のキーとして 1 つ以上のキーを有効にする値を割り当てることができます Dump1Keys 。 たとえば、0x11 の値を割り当てて Dump1Keys 、右端と左端の両方の Shift キーをキーボード ショートカット シーケンスの最初のキーとして定義します。

Dump2Key

Dump2Keyレジストリ値は、ターゲット コンピューターのキーボード レイアウトのスキャン コード テーブル内のインデックスです。 ドライバーの実際のテーブルを参照してください。

const UCHAR keyToScanTbl[134] = { 
        0x00,0x29,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
        0x0A,0x0B,0x0C,0x0D,0x7D,0x0E,0x0F,0x10,0x11,0x12,
        0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x00,
        0x3A,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,
        0x27,0x28,0x2B,0x1C,0x2A,0x00,0x2C,0x2D,0x2E,0x2F,
        0x30,0x31,0x32,0x33,0x34,0x35,0x73,0x36,0x1D,0x00,
        0x38,0x39,0xB8,0x00,0x9D,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0xD2,0xD3,0x00,0x00,0xCB,
        0xC7,0xCF,0x00,0xC8,0xD0,0xC9,0xD1,0x00,0x00,0xCD,
        0x45,0x47,0x4B,0x4F,0x00,0xB5,0x48,0x4C,0x50,0x52,
        0x37,0x49,0x4D,0x51,0x53,0x4A,0x4E,0x00,0x9C,0x00,
        0x01,0x00,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,
        0x43,0x44,0x57,0x58,0x00,0x46,0x00,0x00,0x00,0x00,
        0x00,0x7B,0x79,0x70 };

インデックス 124 (sysreq) は、84 キー キーボードのスキャン コードが異なるため、特殊なケースです。

USB または PS/2 キーボードからシステムクラッシュを強制する代替キーボード ショートカットを定義する場合は、レジストリ値を CrashOnCtrlScroll 0 に設定するか、レジストリから削除する必要があります。

例: このシナリオでは、ノート PC は PS2 キーボード ドライバーを使用し、外部 HID キーボードが接続されています。 両方の値を設定すると、いずれかのキーボードから手動でシステム クラッシュをトリガーできます。 次のレジストリ キーが設定されている場合は、右端のコントロール キーを押したまま Space キーを 2 回押すと、手動システム クラッシュを強制できます。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\crashdump]
"Dump1Keys"=dword:00000002
"Dump2Key"=dword:0000003d

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\crashdump]
"Dump1Keys"=dword:00000002
"Dump2Key"=dword:0000003d

制限事項

キーボード ショートカット シーケンスが機能しないような方法でシステムがフリーズする可能性はありますが、まれです。 キーボード ショートカット シーケンスを使用してクラッシュを開始すると、 Ctrl + Alt + DELETE が機能しない多くの場合でも機能します。

コンピューターが高い割り込み要求レベル (IRQL) で応答を停止した場合、キーボードからのシステム クラッシュを強制しても機能しません。 この制限は、メモリ ダンプ プロセスを実行できる Kbdhid.sys ドライバーが、 i8042prt.sys ドライバーよりも低い IRQL で動作するためです。

こちらもご覧ください

バグ チェック 0xE2: MANUALLY_INITIATED_CRASH

!analyze -v

WinDbg によるカーネルモード ダンプ ファイルの分析

バグ チェック 0x161:LIVE_SYSTEM_DUMP

カーネル ダンプまたは完全なクラッシュ ダンプを生成する

Kernel-Mode ダンプ ファイルの種類