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


Справочник по управлению питанием устройств

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

Владелец политики питания для устройства обычно является драйвером функции устройства. Чтобы включить управление питанием на уровне компонентов, этот драйвер регистрирует устройство с помощью платформы управления питанием (PoFx). Регистрируя устройство, драйвер несет ответственность за информирование PoFx, когда компонент активно используется и когда компонент неактивен. PoFx делает интеллектуальный выбор состояния простоя для устройства на основе сведений о действии компонента, допустимости задержки, ожидаемой длительности простоя и требованиях к пробуждению. Управляя потреблением электроэнергии на уровне компонента, PoFx может снизить требования к мощности, сохраняя скорость реагирования системы. Дополнительные сведения см. в разделе "Управление питанием на уровне компонентов".

Подпрограммы управления питанием устройств

Эти подпрограммы реализуются платформой управления питанием (PoFx) для включения управления питанием устройств. Эти подпрограммы вызываются драйвером, который является владельцем политики питания (PPO) для устройства. Как правило, драйвер функции для устройства — это PPO для этого устройства.

Раздел Описание
PoFxActivateComponent Подпрограмма PoFxActivateComponent увеличивает количество ссылок на активацию для указанного компонента.
PoFxCompleteDevicePowerNotRequired Подпрограмма PoFxCompleteDevicePowerNotRequired уведомляет платформу управления питанием (PoFx), что вызывающий драйвер завершил свой ответ на вызов процедуры обратного вызова устройства DevicePowerNotRequiredCallback.
PoFxCompleteIdleCondition Подпрограмма PoFxCompleteIdleCondition сообщает платформе управления питанием (PoFx), что указанный компонент завершил ожидающее изменение условия простоя.
PoFxCompleteIdleState Подпрограмма PoFxCompleteIdleState сообщает платформе управления питанием (PoFx), что указанный компонент завершил ожидающее изменение состояния Fx.
PoFxIdleComponent Подпрограмма PoFxIdleComponent уменьшает количество ссылок на активацию для указанного компонента.
PoFxIssueComponentPerfStateChange Подпрограмма PoFxIssueComponentPerfStateChange отправляет запрос на размещение компонента устройства в определенном состоянии производительности.
PoFxIssueComponentPerfStateChangeMultiple Подпрограмма PoFxIssueComponentPerfStateChangeMultiple отправляет запрос на изменение состояний производительности в нескольких наборах состояний производительности одновременно для компонента устройства.
PoFxNotifySurprisePowerOn Подпрограмма PoFxNotifySurprisePowerOn уведомляет платформу управления питанием (PoFx), что устройство было включено как побочный эффект предоставления питания другому устройству.
PoFxPowerControl Подпрограмма PoFxPowerControl отправляет запрос на управление питанием в платформу управления питанием (PoFx).
PoFxQueryCurrentComponentPerfState Подпрограмма PoFxQueryCurrentComponentPerfState извлекает активное состояние производительности в наборе состояний производительности компонента.
PoFxRegisterComponentPerfStates Подпрограмма PoFxRegisterComponentPerfStates регистрирует компонент устройства для управления состоянием производительности платформой управления питанием (PoFx).
PoFxRegisterDevice Подпрограмма PoFxRegisterDevice регистрирует устройство с помощью платформы управления питанием (PoFx).
PoFxReportDevicePoweredOn Подпрограмма PoFxReportDevicePoweredOn уведомляет платформу управления питанием (PoFx), что устройство завершило запрошенный переход к состоянию питания D0 (полностью на).
PoFxSetComponentLatency Подпрограмма PoFxSetComponentLatency указывает максимальную задержку, которую можно допускать при переходе от условия простоя к активному условию в указанном компоненте.
PoFxSetComponentResidency Подпрограмма PoFxSetComponentResidency задает предполагаемое время в течение длительного времени, когда компонент, скорее всего, останется бездействуемым после того, как компонент входит в условие простоя.
PoFxSetComponentWake Подпрограмма PoFxSetComponentWake указывает, является ли драйвер указанным компонентом пробуждение всякий раз, когда компонент входит в состояние простоя.
PoFxSetDeviceIdleTimeout Подпрограмма PoFxSetDeviceIdleTimeout указывает минимальный интервал времени от момента, когда последний компонент устройства вводит условие простоя до того, когда платформа управления питанием (PoFx) вызывает подпрограмму обратного вызова devicePowerNotRequiredCallback драйвера.
PoFxStartDevicePowerManagement Подпрограмма PoFxStartDevicePowerManagement завершает регистрацию устройства с помощью платформы управления питанием (PoFx) и запускает управление питанием устройств.
PoFxUnregisterDevice Подпрограмма PoFxUnregisterDevice удаляет регистрацию устройства из платформы управления питанием (PoFx).

Обратные вызовы управления питанием устройств

Эти подпрограммы обратного вызова требуются платформой управления питанием (PoFx) для включения управления питанием устройств. Драйвер, который является владельцем политики питания для устройства, реализует эти процедуры обратного вызова. PoFx вызывает эти подпрограммы для запроса и настройки состояний питания компонентов на устройстве.

Раздел Описание
ComponentActiveConditionCallback Подпрограмма обратного вызова ComponentActiveConditionCallback уведомляет драйвер о том, что указанный компонент завершил переход от условия простоя к активному условию.
ComponentIdleConditionCallback Подпрограмма обратного вызова ComponentIdleConditionCallback уведомляет драйвер о том, что указанный компонент завершил переход от активного условия к условию простоя.
ComponentIdleStateCallback Подпрограмма обратного вызова ComponentIdleStateCallback уведомляет драйвер ожидающего изменения состояния питания Fx указанного компонента.
ComponentPerfStateCallback Подпрограмма обратного вызова ComponentPerfStateCallback уведомляет драйвер о завершении запроса на изменение состояния производительности компонента.
DevicePowerNotRequiredCallback Подпрограмма обратного вызова DevicePowerNotRequiredCallback уведомляет драйвер устройства о том, что устройство не требуется оставаться в состоянии питания D0.
DevicePowerRequiredCallback Подпрограмма обратного вызова DevicePowerRequiredCallback уведомляет драйвер устройства о том, что устройство должно ввести и остаться в состоянии питания D0.
PowerControlCallback Подпрограмма обратного вызова PowerControlCallback выполняет операцию управления питанием, запрашиваемую платформой управления питанием (PoFx).

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

Платформа управления питанием (PoFx) определяет эти структуры для поддержки управления питанием устройств.

Раздел Описание
PO_FX_COMPONENT_V1 PO_FX_COMPONENT_V2 Структура PO_FX_COMPONENT описывает атрибуты состояния питания компонента на устройстве.
PO_FX_COMPONENT_IDLE_STATE Структура PO_FX_COMPONENT_IDLE_STATE указывает атрибуты состояния питания Fx компонента на устройстве.
PO_FX_COMPONENT_PERF_INFO Структура PO_FX_COMPONENT_PERF_INFO описывает все наборы состояний производительности для одного компонента на устройстве.
PO_FX_COMPONENT_PERF_SET Структура PO_FX_COMPONENT_PERF_SET представляет набор состояний производительности для одного компонента на устройстве.
PO_FX_DEVICE_V1 PO_FX_DEVICE_V2PO_FX_DEVICE_V3 Структура PO_FX_DEVICE описывает атрибуты питания устройства в платформу управления питанием (PoFx).
PO_FX_PERF_STATE Структура PO_FX_PERF_STATE представляет состояние производительности для одного компонента на устройстве.
PO_FX_PERF_STATE_CHANGE Структура PO_FX_PERF_STATE_CHANGE содержит сведения об изменении состояния производительности, запрашиваемого путем вызова подпрограммы PoFxIssueComponentPerfStateChange или PoFxIssueComponentPerfStateChangeMultiple .

Перечисления управления питанием устройств

Платформа управления питанием (PoFx) определяет эти перечисления для поддержки управления питанием устройств.

Раздел Описание
PO_FX_PERF_STATE_TYPE Перечисление PO_FX_PERF_STATE_TYPE содержит значения, описывающие тип состояний производительности в PO_FX_COMPONENT_PERF_SET.
PO_FX_PERF_STATE_UNIT Перечисление PO_FX_PERF_STATE_UNIT содержит значения, описывающие тип единицы, контролируемый состояниями производительности в PO_FX_COMPONENT_PERF_SET.

Константы управления питанием устройств

биты флагов PO_FX_FLAG_XXX

Константы PO_FX_FLAG_XXX — это биты флагов, указывающие, выполняется ли запрос на изменение состояния компонента синхронно или асинхронно.

#define PO_FX_FLAG_BLOCKING   0x1
#define PO_FX_FLAG_ASYNC_ONLY 0x2

константы PO_FX_FLAG_XXX

Константа Description
PO_FX_FLAG_BLOCKING Измените условие синхронно. Если этот флаг задан, подпрограмма, запрашивающая изменение условия, не возвращает управление вызывающим драйверу, пока оборудование компонента не завершит переход к новому условию. Этот флаг можно использовать только в том случае, если вызывающий объект работает на DISPATCH_LEVEL IRQL < .
PO_FX_FLAG_ASYNC_ONLY Измените условие полностью асинхронно. Если этот флаг задан, вызов подпрограммы обратного вызова драйвера вызывается из потока, отличного от потока, в котором вызывается подпрограмма, запрашивающая изменение условия. Таким образом, подпрограмма, которая запрашивает изменение условия, всегда возвращается асинхронно, не ожидая завершения обратного вызова.

PO_FX_FLAG_XXX примечания

Параметр Flags для следующих подпрограмм можно задать для PO_FX_FLAG_XXX константы:

Биты флагов PO_FX_FLAG_BLOCKING и PO_FX_FLAG_ASYNC_ONLY являются взаимоисключающими. Вызывающий объект может задать один или другой бит флага в параметре Flags, но не оба бита флагов.

Требования PO_FX_FLAG_XXX

Версия Верхний колонтитул
Поддерживается начиная с Windows 8. Wdm.h

биты флагов PO_FX_FLAG_PERF_XXX

Константы PO_FX_FLAG_PERF_XXX — это биты флагов, определяющие, как платформа управления питанием (PoFx) управляет состояниями производительности для компонента устройства.

#define PO_FX_FLAG_PERF_PEP_OPTIONAL   0x1
#define PO_FX_FLAG_PERF_QUERY_ON_F0 0x2
#define PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES 0x4
Константа значение Описание
PO_FX_FLAG_PERF_PEP_OPTIONAL 1 (0x1) Указывает, что драйвер может изменять состояния производительности без помощи подключаемого модуля расширения платформы (PEP) или регистрировать состояния производительности только в PoFx для ведения журнала. Если этот флаг задан, вызов PoFxRegisterComponentPerfStates по-прежнему будет выполнен успешно, если PEP не поддерживает состояния производительности компонента.
PO_FX_FLAG_PERF_QUERY_ON_F0 2 (0x2) Для некоторых устройств peP может потребоваться поместить состояние производительности для компонента в определенное состояние производительности (известное как номинальное состояние производительности) при простои компонента. Драйверы устанавливают этот флаг, если компонент содержит номинальное состояние производительности, в этом случае PoFx запрашивает PEP, чтобы определить текущее состояние производительности при переходе компонента на F0.
PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES 4 (0x4) Для некоторых устройств peP может потребоваться поместить состояние производительности для компонента в определенное состояние производительности (известное как номинальное состояние производительности) при переходе компонента между состояниями простоя. Драйверы задают этот флаг, если этот компонент содержит номинальное состояние производительности, в этом случае PoFx запрашивает PEP, чтобы определить текущее состояние производительности при переходе компонента между состояниями простоя.

PO_FX_FLAG_PERF_XXX примечания

Параметр Flags для подпрограммы PoFxRegisterComponentPerfStates можно задать для константы PO_FX_FLAG_PERF_XXX .

требования PO_FX_FLAG_PERF_XXX

Требования Версия
Поддерживается начиная с Windows 10. Wdm.h