키보드에서 시스템 크래시 강제 적용

다음과 같은 유형의 키보드로 인해 시스템 크래시가 직접 발생할 수 있습니다.

  • i8042prt 포트에 연결된 PS/2 키보드 이 기능은 Windows 운영 체제의 Windows 2000 이상 버전에서 사용할 수 있습니다.

  • USB 키보드
    이 기능은 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.

  • Hyper-V 키보드
    이 기능은 windows 운영 체제의 Windows 10 버전 1903 이상 버전에서 사용할 수 있습니다.

구성

키보드를 사용하여 시스템 작동 중단을 사용하도록 다음 설정을 구성합니다.

  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 설정합니다.

일부 노트북은 기본 제공 키보드에 PS/2 드라이버를 사용하고 외부 HID 키보드도 지원합니다. 이러한 시스템의 경우 두 키보드 중 하나를 사용할 수 있도록 USB 및 PS/2 레지스트리 키를 모두 만드는 것이 좋습니다.

이러한 설정을 적용하려면 시스템을 다시 시작해야 합니다.

다시 시작이 완료되면 바로 가기 키 시퀀스를 사용하여 키보드 크래시가 시작될 수 있습니다. 가장 오른쪽 CTRL 키를 누른 채 SCROLL LOCK 키를 두 번 누릅니다.

그런 다음, 시스템에서 버그 검사 0xE2 MANUALLY_INITIATED_CRASH 호출 KeBugCheck 하고 발급합니다. 크래시 덤프를 사용하지 않도록 설정하지 않으면 크래시 덤프 파일이 작성됩니다.

커널 디버거가 크래시된 컴퓨터에 연결된 경우 크래시 덤프 파일이 작성된 후 컴퓨터가 커널 디버거에 침입합니다.

키보드에서 시스템 크래시가 강제로 발생하도록 대체 바로 가기 키 정의

바로 가기 키 시퀀스에 대해 다음 레지스트리 하위 키에서 대체 값을 구성하여 메모리 덤프 파일을 생성할 수 있습니다.

  • 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 할 수 있습니다. 예를 들어 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 키보드에서 시스템 크래시가 발생하도록 대체 바로 가기 키를 정의하는 경우 레지스트리 값을 0으로 설정 CrashOnCtrlScroll 하거나 레지스트리에서 제거해야 합니다.

예: 이 시나리오에서 랩톱은 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 드라이버보다 낮은 IRQL에서 작동하기 때문에 존재합니다.

추가 정보

버그 검사 0xE2: MANUALLY_INITIATED_CRASH

!analyze -v

WinDbg를 사용하여 Kernel-Mode 덤프 파일 분석

버그 검사 0x161: LIVE_SYSTEM_DUMP

커널 생성 또는 전체 크래시 덤프

Kernel-Mode 덤프 파일의 종류.