Поддержка функциональных состояний питания

Начиная с Windows 8, диспетчер питания включает платформу управления питанием во время выполнения (PoFx). PoFx поддерживает управление питанием и часами на уровне компонента (или части).

Начиная с KMDF версии 1.11, драйверы KMDF могут использовать детализированное управление питанием, которое предлагает PoFx. В частности, драйвер KMDF может определить несколько логических компонентов на одном устройстве, каждый из которых может управляться независимо.

Например, драйвер функции может определить уникальный набор функциональных состояний питания для каждого логического компонента устройства. Как и в случае с состояниями питания устройства и системы, F0 указывает, что компонент полностью включен, а необязательные состояния F1, F2 и т. д. указывают на постепенно более низкие состояния питания. Для поддержки состояний Fx драйвер должен быть владельцем политики питания для устройства.

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

Тип Поддержка KMDF Поддержка UMDF Когда следует использовать или как реализовать

Один компонент, одно состояние (F0)

Поддерживается

Поддерживается

Если требуется, чтобы подключаемый модуль подсистемы питания (PEP) определял значение времени ожидания простоя, а драйвер имеет только одно F-состояние.

Вызовите WdfDeviceAssignS0IdleSettings с помощью idleTimeoutType = SystemManagedIdleTimout или SystemManagedIdleTimoutWithHint.

Один компонент, несколько состояний (F0, F1, F2...)

Поддерживается

Не поддерживается

Если драйвер имеет несколько F-состояний.

В этом случае KMDF обрабатывает большинство взаимодействий с PoFx.

Пример кода см. в разделе Примеры драйверов PoFx.

Несколько компонентов, одно или несколько состояний

Поддерживается с использованием интерфейсов WDM

Не поддерживается

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

Пример кода см. в разделе Примеры драйверов PoFx.

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