Compartir a través de


administración de energía de Component-Level

A partir de Windows 8, el marco de administración de energía (PoFx) permite a un controlador administrar los estados de energía de los componentes individuales de un dispositivo. La administración de energía de nivel de componente existe en paralelo con la administración de energía de nivel de dispositivo. Para obtener una introducción, consulte Introducción a Power Management Framework.

En esta página se describe la API de PoFx para Component-Level Power Management.

Para registrar un dispositivo que poFx administre, el controlador llama a la rutina PoFxRegisterDevice . El controlador pasa esta rutina una estructura PO_FX_DEVICE que, entre otros datos, contiene una matriz de estructuras de PO_FX_COMPONENT . Cada elemento de esta matriz describe los estados de potencia fx de un componente en el dispositivo y los atributos de cada estado fx. (Como mínimo, un componente que no admite la administración de energía de nivel de componente implementa solo el estado F0). Los atributos de un determinado estado de potencia fx en un componente determinado se describen mediante una estructura de PO_FX_COMPONENT_IDLE_STATE , que contiene los siguientes valores:

  • La latencia de transición, que es el tiempo necesario para realizar una transición de este estado Fx al estado F0 (totalmente activado).
  • Requisito de residencia, que es el tiempo que un componente debe dedicar en este estado fx para realizar una transición al estado que vale la pena.
  • Potencia nominal, que es la potencia que consume el componente en este estado Fx.

PoFx usa esta información (además de otras entradas y dependencias de todo el sistema) para tomar decisiones inteligentes sobre qué estado de energía fx debe estar un componente en cualquier momento determinado. PoFx debe equilibrar dos objetivos competidores. En primer lugar, se debe configurar un componente que esté inactivo para consumir la menor potencia posible. En segundo lugar, un componente debe estar preparado para cambiar de un estado Fx de baja potencia a F0 lo suficientemente rápido como para mantener la apariencia de un dispositivo que siempre está encendido y siempre conectado.

La administración de energía de nivel de componente solo se puede realizar cuando un dispositivo está en estado de alimentación D0 (totalmente encendido). Cuando un dispositivo está en el D1 (casi activado), D2 (casi apagado) o el estado de alimentación D3, el dispositivo no es accesible. Cuando el dispositivo está en estado D0, solo los componentes que el controlador está usando activamente necesitan permanecer en el estado F0. Los componentes inactivos pueden cambiar a estados fx de bajo consumo para reducir el consumo de energía.

Mientras un dispositivo está en estado de alimentación D0, el controlador sigue un protocolo sencillo para habilitar la administración de energía de nivel de componente. Cuando el controlador necesita acceder a un componente, el controlador llama a la rutina PoFxActivateComponent para solicitar acceso al componente. Si el componente está en un estado Fx de bajo consumo cuando se produce esta llamada, PoFx inicia una transición al estado F0 y notifica al controlador cuando se completa esta transición. Después, el controlador puede acceder al componente. Cuando el controlador ya no necesita acceder al componente, el controlador llama a la rutina PoFxIdleComponent para notificar a PoFx. En respuesta a esta llamada, PoFx puede cambiar el componente a un estado Fx de bajo consumo.

Un componente al que se puede acceder está en la condición activa. Un componente inaccesible está en la condición de inactividad. Para realizar un seguimiento de la accesibilidad de los componentes de un dispositivo, PoFx mantiene un recuento de referencias de activación en cada componente. Una llamada a PoFxActivateComponent incrementa el recuento del componente especificado en uno y una llamada PoFxIdleComponent disminuye el recuento en uno.

Si una llamada a PoFxActivateComponent incrementa el recuento de cero a uno, PoFx inicia una transición de la condición inactiva a la condición activa y notifica al controlador cuando se completa esta transición. Si un PoFxActivateComponent se produce cuando el componente ya está en la condición activa, el componente permanece en la condición activa y el controlador no recibe ninguna notificación.

Si una llamada a PoFxIdleComponent disminuye el recuento de uno a cero, PoFx inicia una transición de la condición activa a la condición inactiva y notifica al controlador cuando se completa esta transición. Si una llamada a PoFxIdleComponent disminuye el recuento, pero el recuento sigue siendo distinto de cero, el componente permanece en la condición activa y el controlador no recibe ninguna notificación.

El recuento de referencias de activación controla convenientemente situaciones en las que es posible que dos o más rutas de acceso de código del mismo controlador tengan que acceder simultáneamente al mismo componente en un dispositivo. Al mantener este recuento, PoFx permite que las distintas partes del controlador mantengan de forma independiente el acceso al componente sin necesidad de que el controlador administre centralmente el acceso al componente.

La condición activa o inactiva de un componente es el único medio confiable para que un controlador determine si un componente es accesible. Un componente que se encuentra en el estado de energía F0, pero que está en la condición de inactividad podría estar a punto de cambiar a un estado Fx de bajo consumo.

Un componente que está en la condición activa siempre está en estado F0. El componente no puede dejar F0 hasta que entre en la condición de inactividad. Un componente que se encuentra en la condición de inactividad puede estar en F0 o en un estado Fx de bajo consumo. Si un componente está en un estado Fx de bajo consumo cuando una llamada a PoFxActivateComponent inicia una transición de la condición inactiva a la condición activa, PoFx primero debe cambiar el componente a F0 antes de que el componente pueda entrar en la condición activa.

Referencia de administración de energía de dispositivos