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:
- PoFxActivateComponent
- PoFxIdleComponent
- PoFxIssueComponentPerfStateChange
- PoFxIssueComponentPerfStateChangeMultiple
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 |