Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При устранении неполадок системы может потребоваться создать файл аварийного дампа для анализа состояния системы. Вы можете принудительно выполнить сбой системы непосредственно с клавиатуры с помощью определенных сочетаний клавиш. Эта возможность полезна, если система не отвечает или когда требуется записать диагностические сведения.
В статье описывается выполнение следующих задач:
- Настройка параметров реестра для включения сбоев, инициированных клавиатурой
- Использование сочетаний клавиш для активации сбоя системы
- Настройка альтернативных сочетаний клавиш
Эта функция работает с клавиатурами PS/2 (Windows 2000 и более поздних версий), USB-клавиатурами (Windows Vista и более поздними версиями) и Hyper-V клавиатурами (Windows 10 версии 1903 и более поздних версий).
Caution
Принудительное завершение работы системы немедленно останавливает систему и может привести к потере данных. Используйте эту функцию только в том случае, если это необходимо для отладки, и убедитесь, что вы сохраните свою работу.
Настройка
Настройте следующие параметры, чтобы включить сбой системы с помощью клавиатуры:
Если требуется записать файл аварийного дампа, необходимо включить такие файлы дампа. Выберите путь и имя файла и выберите размер файла дампа. Для получения более подробной информации см. в разделе «Включение дамп-файла в режиме ядра».
Для клавиатур 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_DWORD0x01.
- В разделе
Чтобы использовать клавиатуры Hyper-V, необходимо включить возможность инициирования сбоя с клавиатуры в реестре.
- В разделе
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\hyperkbd\Parametersреестра создайте значение с именемCrashOnCtrlScroll - Установите его равным значению
REG_DWORD0x01.
- В разделе
Некоторые ноутбуки используют драйвер 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, либо удалить его из реестра.
Example
В этом сценарии ноутбук использует драйвер клавиатуры 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