При зависании компьютера под управлением Windows 11 пользователи обычно принудительно выключают его, удерживая кнопку питания. Операционная система использует эти последние секунды для сохранения снимка состояния системы, чтобы зафиксировать причину сбоя. Через восемь секунд после начала удержания кнопки ядро системы создает аварийный дамп. При следующей загрузке Windows может отправить этот файл в службу Microsoft Windows Error Reporting — если настройки диагностики позволяют передачу таких данных.

Внутри Microsoft подобные ситуации называют «сбоями при длительном удержании кнопки питания» (long power button hold, LPBH). Если такой сбой происходит на фоне полностью чёрного экрана, данные передаются специальной рабочей группе, в которую входит ветеран Microsoft Рэймонд Чен. Именно он недавно рассказал о том, как работает этот механизм.
Когда юзер нажимает и удерживает кнопку питания на компьютере с Windows 11, через 12 секунд происходит аппаратное отключение питания — в обход самой операционной системы. Однако за четыре секунды до этого «ядро Windows понимает, что пользователь пытается принудительно выключить систему», — поясняет Чен, — и успевает создать дамп памяти ядра. Впрочем, четырёх секунд не всегда достаточно, поэтому иногда дамп оказывается неполным.
Стоит отметить, что 12 секунд — величина не универсальная. В документации Microsoft к отладчику указано, что аппаратное отключение питания на уровне прошивки обычно происходит примерно через 10 секунд (а на некоторых ноутбуках с архитектурой ARM64 — ещё быстрее). В руководстве, посвящённом событию с кодом 41 (Event ID 41), также упоминается, что принудительное выключение происходит, если удерживать кнопку питания не менее четырёх секунд. Если же ноутбук отключается уже через пять секунд, создать дамп просто не получится.
Кроме того, Windows фиксирует, является ли каждый пиксель на экране чёрным. Такие дампы помечаются как «LPBH на чёрном экране» (black screen LPBH) и анализируются профильной группой, в состав которой входит Чен. Причиной может быть неисправный видеодрайвер, ошибка в работе графического композитора (который передаёт драйверу «чёрные» пиксели) или отсутствие какого‑либо изображения на экране — зачастую из‑за того, что процесс, отвечающий за вывод картинки, «завис».
Согласно документации Microsoft по конфиденциальности, «обязательные» (Required) диагностические данные лишь уведомляют компанию о создании файла дампа памяти при сбое, однако «сами дампы не собираются без получения дополнительных разрешений — например, если пользователь согласился на отправку „необязательных“ (Optional) диагностических данных».
Тем не менее, информация о длительном нажатии кнопки питания всё равно передаётся. В перечень обязательных диагностических событий Microsoft включён параметр LongPowerButtonPressDetected, который фиксирует факт того, что пользователь удерживал кнопку питания нажатой.
Упоминание «необязательных» данных в контексте Windows вызывает закономерное беспокойство: Microsoft признаёт, что в дамп памяти, создаваемый при сбое, «могут непреднамеренно попасть фрагменты файлов, с которыми вы работали в момент возникновения проблемы». При этом в компании не уточняют, что именно содержится в дампах, созданных при длительном нажатии кнопки питания (LPBH‑дампах).
Чтобы проверить настройки, нужно перейти в раздел «Параметры» > «Конфиденциальность и защита» > «Диагностика и отзывы» и развернуть пункт «Диагностические данные». Отключение параметра «Отправка необязательных диагностических данных» отменяет основное разрешение, на которое ссылается Microsoft для сбора дампов памяти. Отдельного переключателя именно для дампов, связанных с кнопкой питания, не предусмотрено, однако эта настройка также ограничивает объём данных, собираемых системой отслеживания GDID в Windows 11.
Важно отметить, что кнопка «Удалить диагностические данные» на этой странице не останавливает процесс их отправки и не очищает информацию, привязанную к учётной записи Microsoft — для этого необходимо воспользоваться панелью управления конфиденциальностью (Microsoft Privacy Dashboard).
По мнению Чена, в сборках Windows Insider система может выводить запрос с просьбой отпустить кнопку питания, чтобы ядро ОС успело завершить создание дампа.
Любопытно, что Microsoft документирует наличие подобного экрана уже много лет. Если в реестре задан параметр PowerButtonBugcheck, то удержание кнопки питания в течение 7 секунд с последующим её отпусканием (до истечения 10 секунд) инициирует ошибку системы (Bug Check) с кодом 0x1C8. Вместо привычного экрана с сообщением о критической ошибке теперь отображается текст: «Пожалуйста, отпустите кнопку питания. Нам потребуется еще несколько секунд для завершения работы», — дополненный счётчиком в процентах.
Эта функция появилась еще в Windows 10 версии 1809 и требует наличия кнопки питания, работающей через интерфейс GPIO. Вероятно, в тестовых сборках (Insider) используется именно этот механизм, хотя официального подтверждения от Microsoft пока нет.
Чтобы узнать, было ли на компьютере выполнено принудительное выключение, нужно проверить наличие события с кодом 41 (Kernel‑Power) в «Просмотре событий» (Event Viewer > Журналы Windows > Система). По данным Microsoft, при удержании кнопки питания фиксируется ненулевое значение параметра PowerButtonTimestamp, а в Windows 11 на вкладке «Подробности» также появляется запись LongPowerButtonPressDetected. Впрочем, событие с кодом 41 лишь указывает на некорректное завершение работы — оно не гарантирует, что система успела создать дамп памяти.
Стоит отметить, что чёрный экран — не всегда признак ошибки в Windows. Чен вспоминает случай из практики техподдержки времен Windows 3.1: пользователь столкнулся с тем, что после включения компьютера экран оставался пустым — всё из‑за того, что в панели управления «Цвета» они установили для всех элементов чёрный цвет, включая текст в окнах.
Источник: habr.com