強制從鍵盤發生系統當機

下列類型的鍵盤可能會導致系統直接當機:

  • 在 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的值,並將它設定為 REG_DWORD 等於 0x01的值。

  3. 使用USB鍵盤時,您必須在登錄中啟用鍵盤起始的當機。 在登錄機碼 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters中,建立名為 CrashOnCtrlScroll的值,並將它設定為 REG_DWORD 等於 0x01的值。

  4. 使用 Hyper-V 鍵盤時,您必須在登錄中啟用鍵盤起始的當機。 在登錄機碼 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\hyperkbd\Parameters中,建立名為 CrashOnCtrlScroll的值,並將它設定為 REG_DWORD 等於 0x01的值。

某些膝上型計算機會針對內建鍵盤使用 PS/2 驅動程式,也支援外部 HID 鍵盤。 針對這些系統,請考慮同時建立USB和 PS/2 登錄機碼,以允許使用任一鍵盤。

您必須重新啟動系統,這些設定才會生效。

重新啟動完成後,可以使用下列快捷鍵順序來起始鍵盤當機:按住最右邊的 CTRL 鍵,然後按兩次 SCROLL LOCK 鍵。

系統接著會呼叫 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 鍵。

下表說明第一個熱鍵的十六進位值。

鍵盤快捷方式順序中使用的第一個按鍵
0x01 最右邊的SHIFT鍵
0x02 最右邊的 CTRL 鍵
0x04 最右邊的ALT鍵
0x10 最左邊的SHIFT鍵
0x20 最左邊的 CTRL 鍵
0x40 最左邊的ALT鍵

您可以指派 Dump1Keys 值,以啟用一或多個按鍵做為鍵盤快捷方式序列中使用的第一個按鍵。 例如,指派 Dump1Keys 值 0x11,將最右邊和最左邊的 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,或從登錄中移除它。

範例:在此案例中,膝上型計算機會使用 PS2 鍵盤驅動程式,並附加外部 HID 鍵盤。 設定這兩個值可讓您從任一鍵盤觸發手動系統當機。 手動系統當機可以藉由按住最右邊的控制鍵,並在設定下列登錄機碼時按下空格鍵兩次來強制。

[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 驅動程式可讓記憶體轉儲進程執行,其運作的 IRQL 低於 i8042prt.sys 驅動程式。

另請參閱

錯誤檢查0xE2:MANUALLY_INITIATED_CRASH

!analyze -v

使用 WinDbg 分析內核模式傾印檔案

錯誤檢查0x161:LIVE_SYSTEM_DUMP

產生核心或完成損毀傾印

核心模式傾印檔案的品種。