強制從鍵盤損毀系統

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

  • 在 i8042prt 埠上連線的 PS/2 鍵盤 此功能適用於 Windows 2000 和更新版本的 Windows 作業系統。

  • USB 鍵盤
    此功能適用於 Windows Vista 和更新版本的 Windows 作業系統。

  • Hyper-V 鍵盤
    此功能適用於 windows 作業系統的 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的值,並將它設定為等於 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 驅動程式可讓記憶體轉儲進程執行,其運作方式比 i8042prt.sys 驅動程式低。

另請參閱

錯誤檢查0xE2:MANUALLY_INITIATED_CRASH

!analyze -v

使用 WinDbg 分析 Kernel-Mode 傾印檔案

錯誤檢查0x161:LIVE_SYSTEM_DUMP

產生核心或完成損毀傾印

各種 Kernel-Mode 傾印檔案