Справочник по управлению питанием устройств
Драйверы могут разделить оборудование устройства на несколько логических компонентов, чтобы обеспечить точное управление питанием. Компонент имеет набор состояний питания, которые можно управлять независимо от состояний питания других компонентов на том же устройстве. В состоянии 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 константы:
- PoFxActivateComponent
- PoFxIdleComponent
- PoFxIssueComponentPerfStateChange
- PoFxIssueComponentPerfStateChangeMultiple
Биты флагов 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 |