キーボードからのシステム クラッシュの強制実行
次の種類のキーボードを使用すると、システムが直接クラッシュする可能性があります。
i8042prt ポートに接続された PS/2 キーボード に接続されている PS/2 キーボード この機能は、Windows 2000 以降のバージョンの Windows オペレーティング システムで使用できます。
USB キーボード
この機能は、Windows Vista 以降のバージョンの Windows オペレーティング システムでのみ使用できます。Hyper-V キーボード
この機能は、Windows 10 バージョン 1903 以降の Windows オペレーティング システムで利用できます。
構成
キーボードを使用してシステムクラッシュを有効にするには、次の設定を構成します。
クラッシュ ダンプ ファイルを書き込む場合は、そのようなダンプ ファイルを有効にする必要があります。 パスとファイル名を選択し、ダンプ ファイルのサイズを選択します。 詳しくは、カーネル・モード・ダンプ・ファイルの使用可能化 を参照してください。
PS/2 キーボードでは、レジストリでキーボードによって開始されるクラッシュを有効にする必要があります。 レジストリ キー
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters
で、名前の付いたCrashOnCtrlScroll
値を作成し、0x01の値と等しい値にREG_DWORD
設定します。USB キーボードの場合は、レジストリでキーボードによるクラッシュを有効にする必要があります。 レジストリ キー
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters
で、名前の付いたCrashOnCtrlScroll
値を作成し、0x01の値と等しい値にREG_DWORD
設定します。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 に設定するか、レジストリから削除する必要があります。
例: このシナリオでは、ノート 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
WinDbg によるカーネル モード ダンプ ファイルの分析