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

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

  • i8042prt ポートに接続された PS/2 キーボード に接続されている 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 設定します。

一部のノート 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 キーに設定できます。

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

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 に設定するか、レジストリから削除する必要があります。

例: このシナリオでは、ノート 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

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

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