Referencia de administración de energía de dispositivos

Los controladores pueden dividir su hardware de dispositivo en varios componentes lógicos para habilitar la administración de energía específica. Un componente tiene un conjunto de estados de energía que se pueden administrar independientemente de los estados de energía de otros componentes del mismo dispositivo. En el estado F0, el componente está totalmente activado. El componente podría admitir estados de baja energía adicionales F1, F2, etc.

El propietario de la directiva de energía para un dispositivo suele ser el controlador de funciones del dispositivo. Para habilitar la administración de energía de nivel de componente, este controlador registra el dispositivo con el marco de administración de energía (PoFx). Al registrar el dispositivo, el controlador asume la responsabilidad de informar a PoFx cuándo se usa activamente un componente y cuándo el componente está inactivo. PoFx toma opciones de estado de inactividad inteligentes para el dispositivo en función de la información sobre la actividad del componente, la tolerancia a la latencia, las duraciones de inactividad esperadas y los requisitos de reactivación. Al controlar el uso de energía en el nivel de componente, PoFx puede reducir los requisitos de energía al tiempo que conserva la capacidad de respuesta del sistema. Para obtener más información, consulte Administración de energía de nivel de componente.

Rutinas de administración de energía de dispositivos

Estas rutinas se implementan mediante el marco de administración de energía (PoFx) para habilitar la administración de energía de dispositivos. El controlador propietario de la directiva de energía (PPO) para un dispositivo llama a estas rutinas. Normalmente, el controlador de funciones de un dispositivo es el PPO para este dispositivo.

Tema Descripción
PoFxActivateComponent La rutina PoFxActivateComponent incrementa el recuento de referencias de activación en el componente especificado.
PoFxCompleteDevicePowerNotRequired La rutina PoFxCompleteDevicePowerNotRequired notifica al marco de administración de energía (PoFx) que el controlador de llamada ha completado su respuesta a una llamada a la rutina de devolución de llamada DevicePowerNotRequiredCallback del controlador.
PoFxCompleteIdleCondition La rutina PoFxCompleIdleCondition informa al marco de administración de energía (PoFx) de que el componente especificado ha completado un cambio pendiente a la condición de inactividad.
PoFxCompleteIdleState La rutina PoFxCompleteIdleState informa al marco de administración de energía (PoFx) de que el componente especificado ha completado un cambio pendiente a un estado Fx.
PoFxIdleComponent La rutina PoFxIdleComponent reduce el recuento de referencias de activación en el componente especificado.
PoFxIssueComponentPerfStateChange La rutina PoFxIssueComponentPerfStateChange envía una solicitud para colocar un componente de dispositivo en un estado de rendimiento determinado.
PoFxIssueComponentPerfStateChangeMultiple La rutina PoFxIssueComponentPerfStateChangeMultiple envía una solicitud para cambiar los estados de rendimiento en varios conjuntos de estados de rendimiento simultáneamente para un componente de dispositivo.
PoFxNotifySurprisePowerOn La rutina PoFxNotifySurprisePowerOn notifica al marco de administración de energía (PoFx) que un dispositivo estaba activado como efecto secundario de suministrar energía a algún otro dispositivo.
PoFxPowerControl La rutina PoFxPowerControl envía una solicitud de control de energía al marco de administración de energía (PoFx).
PoFxQueryCurrentComponentPerfState La rutina PoFxQueryCurrentComponentPerfState recupera el estado de rendimiento activo en el conjunto de estados de rendimiento de un componente.
PoFxRegisterComponentPerfStates La rutina PoFxRegisterComponentPerfStates registra un componente de dispositivo para la administración del estado de rendimiento mediante el marco de administración de energía (PoFx).
PoFxRegisterDevice La rutina PoFxRegisterDevice registra un dispositivo con el marco de administración de energía (PoFx).
PoFxReportDevicePoweredOn La rutina PoFxReportDevicePoweredOn notifica al marco de administración de energía (PoFx) que el dispositivo completó la transición solicitada al estado de alimentación D0 (totalmente encendido).
PoFxSetComponentLatency La rutina PoFxSetComponentLatency especifica la latencia máxima que se puede tolerar en la transición de la condición de inactividad a la condición activa en el componente especificado.
PoFxSetComponentResidency La rutina PoFxSetComponentResidency establece el tiempo estimado durante el cual es probable que un componente permanezca inactivo después de que el componente entre en la condición de inactividad.
PoFxSetComponentWake La rutina PoFxSetComponentWake indica si el controlador arma el componente especificado para reactivarse cada vez que el componente entra en la condición de inactividad.
PoFxSetDeviceIdleTimeout La rutina PoFxSetDeviceIdleTimeout especifica el intervalo de tiempo mínimo desde que el último componente del dispositivo entra en la condición de inactividad hasta que el marco de gestión de energía (PoFx) llama a la rutina de devolución de llamada DevicePowerNotRequiredCallback del controlador.
PoFxStartDevicePowerManagement La rutina PoFxStartDevicePowerManagement completa el registro de un dispositivo con el marco de administración de energía (PoFx) e inicia la administración de energía del dispositivo.
PoFxUnregisterDevice La rutina PoFxUnregisterDevice quita el registro de un dispositivo del marco de administración de energía (PoFx).

Devoluciones de llamada de administración de energía de dispositivos

Estas rutinas de devolución de llamada son necesarias en el marco de administración de energía (PoFx) para habilitar la administración de energía de dispositivos. El controlador propietario de la directiva de energía para el dispositivo implementa estas rutinas de devolución de llamada. PoFx llama a estas rutinas para consultar y configurar los estados de energía de los componentes del dispositivo.

Tema Descripción
ComponentActiveConditionCallback La rutina de devolución de llamada ComponentActiveConditionCallback notifica al controlador que el componente especificado completó una transición de la condición de inactividad a la condición activa.
ComponentIdleConditionCallback La rutina de devolución de llamada ComponentIdleConditionCallback notifica al controlador que el componente especificado completó una transición de la condición activa a la condición inactiva.
ComponentIdleStateCallback La rutina de devolución de llamada ComponentIdleStateCallback notifica al controlador un cambio pendiente al estado de energía Fx del componente especificado.
ComponentPerfStateCallback La rutina de devolución de llamada ComponentPerfStateCallback notifica al controlador que su solicitud para cambiar el estado de rendimiento de un componente ha finalizado.
DevicePowerNotRequiredCallback La rutina de devolución de llamada DevicePowerNotRequiredCallback notifica al controlador de dispositivo que el dispositivo no debe permanecer en el estado de energía D0.
DevicePowerRequiredCallback La rutina de devolución de llamada DevicePowerRequiredCallback notifica al controlador de dispositivo que el dispositivo debe entrar y permanecer en el estado de energía D0.
PowerControlCallback La rutina de devolución de llamada PowerControlCallback realiza una operación de control de energía solicitada por el marco de administración de energía (PoFx).

Estructuras de administración de energía de dispositivos

El marco de administración de energía (PoFx) define estas estructuras para admitir la administración de energía de dispositivos.

Tema Descripción
PO_FX_COMPONENT_V1 PO_FX_COMPONENT_V2 La estructura PO_FX_COMPONENT describe los atributos de estado de energía de un componente de un dispositivo.
PO_FX_COMPONENT_IDLE_STATE La estructura PO_FX_COMPONENT_IDLE_STATE especifica los atributos de un estado de potencia Fx de un componente de un dispositivo.
PO_FX_COMPONENT_PERF_INFO La estructura PO_FX_COMPONENT_PERF_INFO describe todos los conjuntos de estados de rendimiento de un único componente dentro de un dispositivo.
PO_FX_COMPONENT_PERF_SET La estructura PO_FX_COMPONENT_PERF_SET representa un conjunto de estados de rendimiento para un único componente dentro de un dispositivo.
PO_FX_DEVICE_V1 PO_FX_DEVICE_V2 PO_FX_DEVICE_V3 La estructura PO_FX_DEVICE describe los atributos de energía de un dispositivo en el marco de administración de energía (PoFx).
PO_FX_PERF_STATE La estructura PO_FX_PERF_STATE representa un estado de rendimiento para un único componente dentro de un dispositivo.
PO_FX_PERF_STATE_CHANGE La estructura PO_FX_PERF_STATE_CHANGE contiene información sobre un cambio en un estado de rendimiento que se solicita llamando a la rutina PoFxIssueComponentPerfStateChange o PoFxIssueComponentPerfStateChangeMultiple.

Enumeraciones de administración de energía de dispositivos

El marco de administración de energía (PoFx) define estas enumeraciones para admitir la administración de energía de dispositivos.

Tema Descripción
PO_FX_PERF_STATE_TYPE La enumeración PO_FX_PERF_STATE_TYPE contiene valores que describen el tipo de estados de rendimiento en un PO_FX_COMPONENT_PERF_SET.
PO_FX_PERF_STATE_UNIT La enumeración PO_FX_PERF_STATE_UNIT contiene valores que describen el tipo de unidad controlada por los estados de rendimiento de un PO_FX_COMPONENT_PERF_SET.

Constantes de administración de energía de dispositivos

Bits de marca de PO_FX_FLAG_XXX

Las constantes de PO_FX_FLAG_XXX son bits de marca que indican si una solicitud para cambiar la condición del componente se realiza de forma sincrónica o asincrónica.

#define PO_FX_FLAG_BLOCKING   0x1
#define PO_FX_FLAG_ASYNC_ONLY 0x2

Constantes de PO_FX_FLAG_XXX

Constante Descripción
PO_FX_FLAG_BLOCKING Haga que la condición cambie sincrónicamente. Si se establece esta marca, la rutina que solicita el cambio de condición no devuelve el control al controlador que realiza la llamada hasta que el hardware del componente complete la transición a la nueva condición. Esta marca solo se puede usar si el llamador se ejecuta en IRQL < DISPATCH_LEVEL.
PO_FX_FLAG_ASYNC_ONLY Haga que la condición cambie completamente asincrónica. Si se establece esta marca, se llama a la rutina de devolución de llamada del controlador de llamada desde un subproceso distinto del subproceso en el que se llama a la rutina que solicita el cambio de condición. Por lo tanto, la rutina que solicita el cambio de condición siempre devuelve de forma asincrónica sin esperar a que se complete la devolución de llamada.

Comentarios de PO_FX_FLAG_XXX

El parámetro Flags de las siguientes rutinas se puede establecer en una constante de PO_FX_FLAG_XXX:

Los bits de marca PO_FX_FLAG_BLOCKING y PO_FX_FLAG_ASYNC_ONLY se excluyen mutuamente. El llamador puede establecer uno u otro bit de marca en el parámetro Flags, pero no ambos bits de marca.

Requisitos de PO_FX_FLAG_XXX

Versión Encabezado
Se admite a partir de Windows 8. Wdm.h

Bits de marca de PO_FX_FLAG_PERF_XXX

Las constantes de PO_FX_FLAG_PERF_XXX son bits de marca que definen cómo el marco de administración de energía (PoFx) administra los estados de rendimiento de un componente de dispositivo.

#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
Constante Value Descripción
PO_FX_FLAG_PERF_PEP_OPTIONAL 1 (0x1) Indica que el controlador puede cambiar los estados de rendimiento sin ayuda del complemento de extensión de plataforma (PEP) o que el controlador registra estados de rendimiento con PoFx solo con fines de registro. Si se establece esta marca, la llamada a PoFxRegisterComponentPerfStates se realizará correctamente si el PEP no admite estados de rendimiento para el componente.
PO_FX_FLAG_PERF_QUERY_ON_F0 2 (0x2) Para algunos dispositivos, es posible que el PEP necesite colocar un estado de rendimiento establecido para un componente en un determinado estado de rendimiento (conocido como estado de rendimiento nominal) cuando inactiva el componente. Los controladores establecen esta marca si el componente contiene estados de rendimiento nominales, en cuyo caso PoFx consultará el PEP para determinar el estado de rendimiento actual cuando el componente pase a F0.
PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES 4 (0x4) Para algunos dispositivos, es posible que el PEP necesite colocar un estado de rendimiento establecido para un componente en un determinado estado de rendimiento (conocido como estado de rendimiento nominal) cuando el componente pasa de un estado de inactividad a otro. Los controladores establecen esta marca si este componente contiene estados de rendimiento nominales, en cuyo caso PoFx consultará el PEP para determinar el estado de rendimiento actual cuando el componente pase de un estado de inactividad a otro.

Comentarios de PO_FX_FLAG_PERF_XXX

El parámetro Flags de la rutina PoFxRegisterComponentPerfStates se puede establecer en una constante de PO_FX_FLAG_PERF_XXX.

Requisitos de PO_FX_FLAG_PERF_XXX

Requisitos Versión
Se admite a partir de Windows 10. Wdm.h