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


Обработка IRP_MN_SET_POWER для состояний питания системы

Диспетчер питания отправляет IRP питания, который задает дополнительный код IRP_MN_SET_POWER и состояние питания системы по одной из следующих причин:

  • Изменение состояния питания системы.

  • Подтвердить текущее состояние власти после неудачного запроса IRP_MN_QUERY_POWER .

Через диспетчер ввода-вывода диспетчер управления питанием отправляет IRP верхнему драйверу в стеке устройств на каждом узле устройства PnP. IRP уведомляет всех драйверов в стеке о правильном состоянии питания системы.

Чтобы обеспечить упорядоченный запуск, диспетчер питания последовательности системного включения irP, чтобы родительские устройства имели возможность включить питание до того, как их дети это делают. Диспетчер питания не запрашивает перед отправкой IRP питания системы.

Аналогичным образом, чтобы гарантировать, что компьютер находится в спящем режиме или завершает работу, диспетчер управления питанием отправляет системные irP, определяющие спящий режим, гибернацию или завершение работы в определенной последовательности, чтобы устройства, расположенные дальше от корневого каталога, отключали питание до устройств, расположенных ближе к корню. По возможности диспетчер управления питанием запрашивает перед отправкой такого IRP. Дополнительные сведения см. в разделе Обработка IRP_MN_QUERY_POWER для системных состояний питания.

IRP системы питания не является прямым запросом на изменение состояния питания, а уведомлением. Драйвер не должен изменять состояние питания своего устройства в качестве прямого ответа на IRP питания системы ; драйвер изменяет состояние питания устройства только в ответ на IRP питания устройства . (Владелец политики управления питанием устройства отправляет IRP питания устройства. См. раздел Обработка системного Set-Power IRP в владельце политики управления питанием устройства.)

Даже если устройство уже находится в состоянии питания устройства, которое является допустимым для запрошенного состояния питания системы, каждый водитель тем не менее должен передать IRP набора питания системы следующему ниже водителю, пока он не достигнет водителя автобуса. Только водитель автобуса может пройти этот IRP.

Способ обработки этого IRP драйвером зависит от его роли в стеке устройств, как описано в следующих разделах:

Обработка системного Set-Power IRP у владельца политики управления питанием устройства

Обработка системного Set-Power IRP в драйвере автобуса

Обработка системного Set-Power IRP в драйвере фильтра

Драйвер не может выполнить IRP_MN_SET_POWER запрос на настройку состояния питания системы. Диспетчер питания игнорирует любое состояние сбоя, возвращаемое для этого IRP.