Принудительное завершение работы системы с клавиатуры

Следующие типы клавиатур могут напрямую вызвать сбой системы:

  • Клавиатуры PS/2, подключенные к портам i8042prt Эта функция доступна в 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

Анализ файла дампа Kernel-Mode с помощью WinDbg

0x161 проверки ошибок: LIVE_SYSTEM_DUMP

Создание ядра или выполнение аварийного дампа

Разновидности файлов дампа Kernel-Mode.