BSOD 0x0000009F: DRIVER_POWER_STATE_FAILURE - Сбой питания (WinDbg)
Архитектура управления питанием (ACPI) и симптомы
Синий экран BSOD 0x0000009F (DRIVER_POWER_STATE_FAILURE) возникает, когда драйвер устройства (сетевая карта, HBA-контроллер или USB-контроллер) не отвечает на команду изменения состояния питания (Power IRP) в течение критического таймаута (обычно 3-5 минут). Операционная система посылает команду перейти в режим сна (D3) или проснуться (D0), но драйвер игнорирует её. Симптомы: сервер не может штатно перезагрузиться или выключиться, зависает на экране "Остановка служб" (Shutting down...), а затем падает в BSOD.
Анализ параметров (WinDbg)
| Параметр 1 (Sub-Code) | Что означает |
|---|---|
0x00000003 | Устройство не завершило обработку Power IRP (запроса питания) за отведенное время. Самый частый сценарий. В Parameter 4 будет адрес зависшего IRP (Используйте команду !irp). |
0x00000004 | Драйвер завис при попытке перехода в новое состояние питания. |
0x00000001 | Драйвер 'забыл' передать IRP-запрос следующему устройству в стеке (программный баг драйвера). |
Пошаговое дерево решений (Отладка и Энергосбережение)
Сценарий 1: Глобальное отключение сна на Серверах
На серверных ОС (Windows Server) функции глубокого "сна" (Sleep/Hibernate) и гибернации не имеют смысла и вызывают только проблемы с сетевым стеком (особенно в Hyper-V).
- Отключение Fast Startup (Быстрый запуск): Эта функция использует гибернацию ядра при выключении. Откройте CMD от имени Администратора и полностью отключите ее на уровне ОС:
powercfg /h off - Профиль электропитания: Нажмите Win+R ->
powercfg.cpl. Установите схему Высокая производительность (High Performance). Это запретит ОС отключать диски и PCIe-шины при простое.
Сценарий 2: Запрет отключения сетевых адаптеров (NIC)
Ошибка 0x9F чаще всего возникает из-за драйверов сетевых карт (Intel, Broadcom), которые пытаются уснуть, чтобы сэкономить 2 Ватта энергии, но "подвисают" при пробуждении.
- Откройте Диспетчер устройств (
devmgmt.msc). - Найдите все Сетевые адаптеры (включая виртуальные Hyper-V vSwitch).
- Откройте их Свойства -> вкладка Управление электропитанием (Power Management).
- Снимите галочку "Разрешить отключение этого устройства для экономии энергии" (Allow the computer to turn off this device to save power).
Сценарий 3: Локализация виновника в дампе (WinDbg)
Если профилактика не помогла, найдите конкретный драйвер.
- Откройте
MEMORY.DMPв WinDbg и выполните!analyze -v. - Посмотрите Parameter 4 (например, `0xFFFFE00123456780`).
- Выполните команду:
!irp 0xFFFFE00123456780. - WinDbg выведет стек устройства. Ищите там имя драйвера (например,
b57nd60a.sysилиusbhub.sys). Обновите этот драйвер с сайта производителя.
Типовые ошибки администраторов
- Попытка обновить Windows, игнорируя Firmware: Баги управления питанием (ACPI) тесно связаны с материнской платой. Обновление только драйвера ОС часто не спасает. Вы ОБЯЗАНЫ обновить BIOS/UEFI сервера.
Сбои ACPI ломают циклы установки обновлений (WSUS) и требуют ручного ребута серверов по питанию (Hard Reset). Возьмем вашу физическую инфраструктуру на обслуживание: оптимизируем профили питания, обновим Firmware драйверов (HPE/Dell) и обеспечим 100% удаленную управляемость.
Частые вопросы (FAQ)
Почему 0x9F происходит только при попытке выключить сервер?
При команде 'Завершение работы' (Shutdown) ядро ОС дает команду всем устройствам перейти в выключенное состояние (D3). Если драйвер 'повис' и не подтвердил отключение, диспетчер питания вызывает 0x9F по таймауту.
Может ли UPS (ИБП) вызвать 0x9F?
Да. Если агент ИБП (например, APC PowerChute), подключенный по USB, использует кривой драйвер, он может заблокировать подсистему USB (usbhub.sys), не отвечая на IRP-запросы питания.
Как обновить драйвер, если он системный (например, ndis.sys)?
В 99% случаев системные модули (ndis, pci) являются жертвой стороннего драйвера, сидящего ниже по стеку. Ищите драйвер 'железа' (сетевой карты, чипсета), который передал кривой IRP-запрос.
Возникает ли 0x9F на виртуальных машинах?
Да, особенно если гипервизор (Hyper-V хост) некорректно транслирует ACPI-состояния внутрь гостевой ОС. Убедитесь, что внутри ВМ установлены последние Интеграционные службы (Integration Services).
Что такое IRP в терминологии Windows?
I/O Request Packet (Пакет запроса ввода-вывода) — это структура данных, с помощью которой ядро общается с драйверами (команды 'Прочитать', 'Записать', 'Уснуть'). Если пакет теряется, система падает.