Поделиться через


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

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

  • Клавиатуры 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

Анализ файла дампа в режиме ядра с помощью WinDbg

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

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

Разновидности файлов дампа в режиме ядра.