Владение политикой управления питанием

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

Драйверы на основе платформы не содержат код, который запрашивает изменения в состоянии питания устройства, так как платформа предоставляет этот код. По умолчанию всякий раз, когда система переходит в спящий режим, платформа просит водителя для шины устройства понизить состояние питания устройства до D3. (Драйвер может изменить поведение по умолчанию, чтобы платформа установила для устройства состояние спящего режима D1 или D2, если устройство предоставляет возможности пробуждения.) Когда питание системы возвращается в рабочее (S0), платформа запрашивает у драйвера шины восстановление устройства до рабочего (D0) состояния.

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

  • Возможность устройства перейти в состояние с низким энергопотреблением (спящий режим), когда оно находится в режиме простоя, а система остается в рабочем (S0) состоянии

  • Возможность пробуждения устройства из спящего режима при обнаружении внешнего события

  • Возможность устройства пробуждения всей системы из спящего состояния системы при обнаружении внешнего события

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

По умолчанию для драйверов на основе платформы драйвером функции устройства является владелец политики управления питанием. (Если драйвер-функция отсутствует и водитель автобуса вызвал WdfPdoInitAssignRawDevice, драйвер автобуса является владельцем политики питания. Если вы хотите изменить владельца политики питания для стека драйверов, владелец политики питания по умолчанию должен вызвать WdfDeviceInitSetPowerPolicyOwnership , чтобы отключить владение, а драйвер, который будет владельцем политики управления питанием, должен вызвать WdfDeviceInitSetPowerPolicyOwnership , чтобы включить владение.

Платформа выполняет следующие действия для владельца политики управления питанием:

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

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

  • Если драйвер позволяет пользователям изменять параметры простоя и пробуждения, платформа предоставляет пользовательский интерфейс в виде страницы свойств, которая диспетчер устройств отображается.

Дополнительные сведения об обязанностях владельца политики управления питанием см. в следующих разделах: