次の方法で共有


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

システムの問題をトラブルシューティングするときに、システムの状態を分析するためにクラッシュ ダンプ ファイルを生成することが必要になる場合があります。 特定のキーの組み合わせを使用して、キーボードから直接システムクラッシュを強制できます。 この機能は、システムが応答しなくなる場合や、診断情報をキャプチャする必要がある場合に便利です。

この記事では、以下の方法について説明します。

  • キーボードによるクラッシュを有効にするようにレジストリ設定を構成する
  • キーボード ショートカットを使用してシステム クラッシュをトリガーする
  • 代替キーボード ショートカットを設定する

この機能は、PS/2 キーボード (Windows 2000 以降)、USB キーボード (Windows Vista 以降)、および Hyper-V キーボード (Windows 10 バージョン 1903 以降) で動作します。

注意事項

システムクラッシュを強制すると、システムが直ちに停止し、データが失われる可能性があります。 この機能は、デバッグ目的で必要な場合にのみ使用し、作業内容を保存してください。

構成

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

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

  2. PS/2 キーボードの場合: レジストリでキーボードによるクラッシュを有効にします。

    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters に移動します
    • 名前付きの値を作成する CrashOnCtrlScroll
    • REG_DWORD 値に設定します。 0x01
  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 値と同じ値に設定します。

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

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

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

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

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

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

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

  • 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 キーに設定できます。

次の表では、最初のホット キーの 16 進数の値について説明します。

Value キーボード ショートカット シーケンスで使用される最初のキー
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 に設定するか、レジストリから削除する必要があります。

Example

このシナリオでは、ノート 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 によるカーネル モード ダンプ ファイルの分析

Bug Check 0x161: LIVE_SYSTEM_DUMP

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

さまざまなカーネルモード ダンプ ファイル