Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Некоторые устройства могут входить в состояние низкой мощности (Dx), пока система остается в состоянии работы (S0). Начиная с Windows 8 устройства могут переходить в состояние низкой функциональной мощности (Fx) до перехода в состояние Dx. Для таких устройств система инициирует снижение мощности устройства или компонента после нахождения в неактивном состоянии в течение определённого и настраиваемого времени.
Некоторые из этих устройств также могут активировать сигнал пробуждения на шине при обнаружении внешнего события. Драйвер шины отвечает на этот сигнал, и стек драйверов восстанавливает устройство в рабочее состояние. Устройства, которые не обнаруживают внешние события, остаются в состоянии низкого энергопотребления, пока платформа не попросит драйвер шины инициировать перевод устройства в рабочее состояние.
Если устройство или компонент могут быть отключены при простое, функция обратного вызова EvtDriverDeviceAdd в владельце политики электропитания должна выполнить следующие два шага:
Вызовите WdfDeviceAssignS0IdleSettings, чтобы указать:
- Состояние низкой мощности, в которое будет входить устройство
- Время, когда устройство должно оставаться бездействующим до снижения состояния питания.
- Способно ли устройство обнаружить внешнее событие и активировать сигнал пробуждения на шине
- Могут ли пользователи управлять параметрами простоя устройства
- Включена или отключена возможность отключения питания устройства в режиме простоя
- Возвращается ли устройство к рабочему состоянию (D0), когда система возвращается к рабочему состоянию (S0)
- Определяется ли значение времени ожидания простоя для устройства платформой управления питанием (PoFx)
- Может ли фреймворк поместить устройство в состояние питания D3cold по истечении времени ожидания простоя
Дополнительные сведения об этих параметрах см. в структуре WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, а также в разделе «Поддержка функциональных состояний питания».
Вызовите WdfDeviceInitSetPowerPolicyEventCallbacks, чтобы зарегистрировать следующие функции обратного вызова событий, если они необходимы для вашего устройства.
- EvtDeviceArmWakeFromS0, что позволяет оборудованию устройства (а не шине) реагировать на внешнее событие пробуждения.
- EvtDeviceDisarmWakeFromS0, что отключает способность устройства (а не способность шины) реагировать на внешнее событие пробуждения
- EvtDeviceWakeFromS0Triggered, который сообщает водителю, что автобус обнаружил сигнал пробуждения.
Условия простоя
Платформа считает устройство бездействующим и начинает подсчет времени простоя, когда выполняются все следующие условия:
- Ни одна из управляемых питанием очередей, созданных для этого экземпляра устройства, не имеет запросов, ожидающих в очереди или отправленных к драйверу. Если запрос был отправлен драйверу, а драйвер отправил его в целевой объект ввода-вывода, запрос по-прежнему связан с очередью. Устройство не будет считаться в режиме ожидания, если драйвер не использовал опцию «отправить и забыть» для отправки запроса. Запросы в очередях без управления питанием не учитываются в отношении простоя устройства.
- Если драйвер ранее вызвал WdfDeviceStopIdle, то впоследствии он вызвал WdfDeviceResumeIdle.
- Если владелец политики питания является драйвером шины, ни одно из дочерних устройств драйвера шины не находится в D0.
Если драйвер (или пользователь) включает отключение питания для устройства, возможно, потребуется использовать метод WdfDeviceStopIdle. Если устройство находится в состоянии работы (D0), этот метод предотвращает его переход в режим ожидания до тех пор, пока драйвер не вызовет WdfDeviceResumeIdle. Если устройство находится в состоянии низкой мощности, когда драйвер вызывает WdfDeviceStopIdle, и если система находится в состоянии работы (S0), платформа запрашивает драйвер шины восстановить устройство в рабочее состояние (D0). Каждый успешный вызов WdfDeviceStopIdle должен соответствовать вызову WdfDeviceResumeIdle. Сведения о просмотре количества ссылок на питание в отладчике см. в разделе Отладка утечек ссылок на питание в WDF.
Дополнительные сведения о том, когда драйверу может потребоваться вызвать WdfDeviceStopIdle, см. на справочной странице метода.
Если устройство может проснуться из состояния низкой мощности, драйвер шины устройства участвует в пробуждении устройства. Драйвер автобуса обычно предоставляет функции обратного вызова EvtDeviceEnableWakeAtBus и EvtDeviceDisableWakeAtBus. Эти функции выполняют все необходимые действия на адаптере шины для включения и отключения возможности устройства пробуждаться от состояния низкого энергопотребления.
Сведения о записях реестра, которые управляют возможностями простоя устройства, см. в разделе Пользовательское управление простоем устройства и поведение пробуждения.