Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предупреждение
UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2.
Архивные примеры UMDF 1 можно найти в Windows 11, версия 22H2 — обновление драйверов за май 2022 года.
Дополнительные сведения см. в разделе Начало работы сUMDF.
Некоторые устройства могут входить в спящее состояние, пока система остается в рабочем состоянии. Для таких устройств фреймворк инициирует снижение энергопотребления устройства после того, как оно простаивает (не используется) в течение предопределенного и настраиваемого времени.
Некоторые из этих устройств также могут активировать сигнал пробуждения на шине при обнаружении внешнего события. Драйвер шины отвечает на этот сигнал, и стек драйверов восстанавливает устройство в рабочее состояние. Устройства, которые не обнаруживают внешние события, остаются в состоянии низкого энергопотребления, пока платформа не попросит драйвер шины инициировать перевод устройства в рабочее состояние.
Если устройство может быть отключено в состоянии простоя, владелец политики питания должен выполнить следующие два шага:
Вызовите IWDFDevice2::AssignS0IdleSettings или IWDFDevice3::AssignS0IdleSettingsEx, чтобы указать:
- Состояние низкой мощности, в которое будет входить устройство
- Время, которое устройство должно оставаться бездействующим, прежде чем его состояние питания будет снижено.
- Способно ли устройство обнаружить внешнее событие и активировать сигнал пробуждения на шине
- Могут ли пользователи управлять параметрами простоя устройства
- Может ли платформа поместить устройство в состояние питания D3cold при истечении срока ожидания простоя
Если ваш драйвер был создан с использованием версии 1.11 или более новой версии фреймворка, можно вызвать IWDFDevice3::AssignS0IdleSettingsEx вместо IWDFDevice2::AssignS0IdleSettings. Кроме вышеописанных функций, IWDFDevice3::AssignS0IdleSettingsEx позволяет драйверу указать:
- Включена или отключена возможность отключения питания устройства в режиме простоя
- Возвращается ли устройство к рабочему состоянию (D0), когда система возвращается к рабочему состоянию (S0)
Реализуйте интерфейс IPowerPolicyCallbackWakeFromS0 и следующие функции обратного вызова, если они вам нужны для вашего устройства.
- #B0 #A1 IPowerPolicyCallbackWakeFromS0::OnArmWakeFromS0 #A2 #A3, что позволяет оборудованию устройства (а не шине) реагировать на событие внешнего пробуждения.
- #B0 #A1 IPowerPolicyCallbackWakeFromS0::OnDisarmWakeFromS0 #A2 #A3, что отключает способность устройства (а не способность шины) реагировать на внешнее событие пробуждения.
- #B0 #A1 IPowerPolicyCallbackWakeFromS0::OnWakeFromS0Triggered #A2 #A3, который сообщает водителю, что автобус обнаружил сигнал пробуждения.
Платформа считает устройство бездействующим и начинает подсчет времени простоя, когда выполняются все следующие условия:
- Ни одна из управляемых питанием очередей, созданных для этого экземпляра устройства, не имеет запросов, ожидающих в очереди или отправленных к драйверу. Если запрос был отправлен драйверу, а драйвер отправил его в целевой объект ввода-вывода, запрос по-прежнему связан с очередью, и устройство не будет считаться неактивным. Запросы в очередях, не управляемых питанием, не влияют на простой устройства.
- Если драйвер ранее вызывал IWDFDevice2::StopIdle, затем он вызвал IWDFDevice2::ResumeIdle.
- Если владелец политики питания является драйвером шины, ни одно из дочерних устройств драйвера шины не находится в D0.
Если драйвер (или пользователь) включает отключение питания при простое для вашего устройства, возможно, потребуется использовать метод IWDFDevice2::StopIdle. Если устройство находится в рабочем состоянии (D0), этот метод предотвращает его переход в режим простоя до тех пор, пока драйвер не вызовет IWDFDevice2::ResumeIdle. Если устройство находится в состоянии низкой мощности, когда драйвер вызывает IWDFDevice2::StopIdle, и если система находится в рабочем состоянии (S0), то фреймворк запрашивает у драйвера шины восстановить устройство в его рабочее состояние (D0). Дополнительные сведения о том, когда драйверу возможно потребуется вызвать IWDFDevice2::StopIdle, см. на справочной странице метода.
Если устройство может проснуться из состояния низкой мощности, драйвер шины устройства участвует в пробуждении устройства. Драйвер шины в режиме ядра выполняет все необходимые действия на адаптере шины, чтобы включить или отключить возможность пробуждения устройства из состояния низкого энергопотребления.
Для получения информации о записях реестра, которые управляют возможностями простоя устройства, см. раздел #B0 "Пользовательское управление простоем устройств и поведение пробуждения в #A1 UMDF".