Принудительное завершение работы системы с клавиатуры
Следующие типы клавиатур могут привести к сбою системы напрямую:
Клавиатуры PS/2, подключенные к портам i8042prt, доступны в Windows 2000 и более поздних версиях операционной системы Windows.
USB-клавиатуры
Эта функция доступна в Windows Vista и более поздних версиях операционной системы Windows.Клавиатуры Hyper-V
Эта функция доступна в Windows 10 версии 1903 и более поздних версиях операционной системы Windows.
Настройка
Настройте следующие параметры, чтобы включить сбой системы с помощью клавиатуры:
Если требуется записать файл аварийного дампа, необходимо включить такие файлы дампа. Выберите путь и имя файла и выберите размер файла дампа. Дополнительные сведения см. в разделе "Включение файла дампа в режиме ядра".
С помощью клавиатур PS/2 необходимо включить сбой, инициированный клавиатурой в реестре. В разделе
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters
реестра создайте имяCrashOnCtrlScroll
значения и задайте значение, равноеREG_DWORD
значению 0x01.С помощью USB-клавиатуры необходимо включить сбой, инициированный клавиатурой в реестре. В разделе
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters
реестра создайте имяCrashOnCtrlScroll
значения и задайте значение, равноеREG_DWORD
значению 0x01.С помощью клавиатур 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
Анализ файла дампа в режиме ядра с помощью WinDbg
Проверка ошибок 0x161: LIVE_SYSTEM_DUMP
Создание ядра или выполнение аварийного дампа
Разновидности файлов дампа в режиме ядра.