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

次の種類のキーボードは、システムクラッシュを直接引き起こす可能性があります。

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

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

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

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

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

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

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

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

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

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

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

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

この機能の使用の詳細については、キーボード を使用してメモリ ダンプ Windowsを生成する機能に関する記事を参照してください

キーボードからシステム クラッシュを強制するための代替キーボード ショートカットの定義

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

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

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

キーボード ショートカット シーケンスで使用される最初のキー

0x01

右端の Shift キー

0x02

右端の Ctrl キー

0x04

右端の ALT キー

0x10

左端の Shift キー

0x20

左端の Ctrl キー

0x40

左端の ALT キー

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


Dump2Key レジストリ値は、ターゲット コンピューターのキーボード レイアウトの scancode テーブルへのインデックスです。 ドライバーの実際のテーブルを次に示します。

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

制限事項

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

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