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


Управление политикой управления питанием устройств

Так же, как диспетчер питания поддерживает и администрирует политику питания для системы, один драйвер в стеке устройств для каждого устройства поддерживает и администрирует политику питания для устройства. Этот драйвер является владельцем политики управления питанием для устройства.

Владелец политики управления питанием устройства — это драйвер, который имеет большую часть сведений об использовании устройства и состоянии питания. Он не должен физически настраивать регистры устройств для включения и выключения устройства, но он должен иметь возможность определять, когда устройство используется, когда оно простаивает и когда оно должно изменить состояние питания.

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

Некоторые драйверы действуют как драйвер функции для одного устройства (создание FDO) и драйвер шины (создание PDO) для перечисленного дочернего устройства. В своих подпрограммах диспетчеризации для питания и PnP IRP такой драйвер должен различать свою обработку IRP, отправленных в FDO, и тех, которые отправлены в PDO.

Например, драйвер для адаптера SCSI может выполнять роли драйвера функции (создание FDO) для самого адаптера и драйвера шины (создание PDO) для дисков, подключенных к адаптеру. В качестве драйвера функции или владельца политики для адаптера SCSI этот драйвер получает системные irP и запрашивает irps устройства для адаптера SCSI. В качестве драйвера шины для дисков он обрабатывает и завершает irp устройства, которые указывают PDO диска, которые он создает. То, что драйвер владеет политикой питания для одного устройства (FDO), не означает, что он владеет политикой управления питанием для дочернего устройства (PDO).

Владелец политики управления питанием устройств отвечает за следующее:

  • Установка начального состояния питания устройства на D0 путем вызова PoSetPowerState при обработке запроса IRP_MN_START_DEVICE диспетчера Plug and Play.

    Устройства должны включиться по мере необходимости; например, устройство должно включиться для обработки запроса ввода-вывода. Владелец политики управления питанием устройства отвечает за определение необходимости устройства, обеспечение включения питания устройства и настройку правильного состояния питания устройства. Обычное устройство должно быть включено к моменту завершения IRP запуска устройства PnP.

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

  • Отправка запроса на питание устройства в ответ на системный запрос на питание путем вызова PoRequestPowerIrp.

    Например, когда владелец политики получает IRP системы с питанием, он отправляет IRP набора устройств. Большинство устройств входят в D3, когда система переходит в спящий режим. В массиве DeviceState в структуре DEVICE_CAPABILITIES перечислены самые высокопроизводительные состояния, которые устройство может поддерживать для каждого состояния питания системы. (См. статью Возможности управления питанием устройств отчетов.)

  • Обнаружение простоя устройства и перевод его в спящий режим для экономии энергии.

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

  • При необходимости возвращает устройство в рабочее состояние.

    Когда поступает запрос ввода-вывода для спящего устройства, драйверы устройства должны вернуть его в рабочее состояние.

  • Включение и отключение пробуждения для устройства по запросу.

    Владелец политики управления питанием устройства отправляет и отменяет irps ожидания и пробуждения, как описано в разделе Поддержка устройств с Wake-Up возможностями.