PO_FX_COMPONENT_IDLE_STATE_CALLBACK función de devolución de llamada (wdm.h)
La rutina de devolución de llamada ComponentIdleStateCallback notifica al controlador un cambio pendiente al estado de energía Fx del componente especificado.
Sintaxis
PO_FX_COMPONENT_IDLE_STATE_CALLBACK PoFxComponentIdleStateCallback;
void PoFxComponentIdleStateCallback(
[in] PVOID Context,
[in] ULONG Component,
[in] ULONG State
)
{...}
Parámetros
[in] Context
Puntero al contexto del dispositivo. El controlador de dispositivo usa este contexto para almacenar información sobre el estado de energía actual del dispositivo. El controlador de dispositivo especificó este puntero en el miembro DeviceContext de la estructura PO_FX_DEVICE que el controlador usó para registrar el dispositivo con el marco de administración de energía (PoFx). Este contexto es opaco para PoFx.
[in] Component
Especifica el número de componente. Este parámetro es un índice en la matriz Components de la estructura PO_FX_DEVICE que el controlador de dispositivo usó para registrar el dispositivo con PoFx. Si la matriz Components contiene N elementos, los índices de componentes van de 0 a N-1.
[in] State
Especifica el nuevo estado de energía Fx al que cambiará el componente. Si este parámetro es cero, el nuevo estado es F0; si este parámetro es uno, el nuevo estado es F1; y así sucesivamente.
Valor devuelto
None
Observaciones
Cuando PoFx llama a la rutina ComponentIdleStateCallback del controlador, es posible que el controlador tenga que prepararse para el cambio de estado fx pendiente. Una vez completados los preparativos necesarios, el controlador debe llamar a la rutina PoFxCompleTeIdleState para notificar a PoFx que el controlador completó su respuesta a la devolución de llamada ComponentIdleStateCallback . La llamada a PoFxCompleteIdleState puede producirse antes o después de que se devuelva la rutina ComponentIdleStateCallback .
Si el componente va a cambiar de F0 a un estado Fx de bajo consumo en el que el dispositivo perderá el estado de hardware del componente, el controlador debe guardar el estado de hardware del componente antes de que se produzca la transición al nuevo estado Fx. Si el componente va a cambiar de un estado Fx de baja potencia a F0 y el estado de hardware se guardó anteriormente, el controlador debe restaurar el estado de hardware después de restaurar la alimentación en el componente.
En algunos dispositivos, el estado de energía de un componente podría controlarse en el hardware del dispositivo. Para estos dispositivos, el controlador suele ser responsable de cambiar el estado de energía del componente. En el caso de otros dispositivos, el estado de energía de un componente podría controlarse mediante hardware externo al dispositivo y el controlador normalmente debe confiar en PoFx para configurar el estado de energía del componente.
Si el controlador es responsable de configurar el estado de energía del componente, el controlador debe cambiar el estado de energía en respuesta a la devolución de llamada ComponentIdleStateCallback . Para una transición de F0 a un estado Fx de bajo consumo, el componente está en F0 en la entrada a la rutina ComponentIdleStateCallback y el controlador debe cambiar el componente el nuevo estado Fx antes de llamar a PoFxCompleteIdleState. Para una transición de un estado Fx de baja potencia a F0, el componente se encuentra en el estado Fx de bajo consumo en la entrada a la rutina ComponentIdleStateCallback y el controlador debe cambiar el componente a F0 antes de llamar a PoFxCompleteIdleState.
Si el controlador no es responsable de configurar el estado de energía del componente, el controlador debe suponer que el componente siempre está en el estado F0 en la entrada a la rutina ComponentIdleStateCallback . Para una transición pendiente de F0 a un estado Fx de bajo consumo, la transición al nuevo estado Fx no se produce hasta que el controlador llama a PoFxCompleteIdleState. Para una transición de un estado Fx de baja potencia a F0, la transición a F0 se produce antes de llamar a la rutina ComponentIdleStateCallback .
PoFx nunca llama a la rutina ComponentIdleStateCallback para cambiar directamente de un estado Fx de bajo consumo a otro estado fx de bajo consumo. Por ejemplo, PoFx podría necesitar cambiar un componente de un estado Fx de bajo consumo a otro en respuesta a una llamada a la rutina PoFxSetComponentLatency, PoFxSetComponentResidency o PoFxSetComponentWake . En este caso, PoFx llama primero a la rutina ComponentIdleStateCallback para cambiar del estado Fx antiguo a F0 y, a continuación, llama a la rutina ComponentIdleStateCallback una segunda vez para cambiar de F0 al nuevo estado Fx.
Ejemplos
Para definir una rutina de devolución de llamada ComponentIdleStateCallback , primero debe proporcionar una declaración de función que identifique el tipo de rutina de devolución de llamada que está definiendo. Windows proporciona un conjunto de tipos de función de devolución de llamada para controladores. Declarar una función mediante los tipos de función de devolución de llamada ayuda a Análisis de código para controladores, Comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.
Por ejemplo, para definir una rutina de devolución de llamada ComponentIdleStateCallback denominada MyComponentIdleStateCallback
, use el tipo PO_FX_COMPONENT_IDLE_STATE_CALLBACK como se muestra en este ejemplo de código:
PO_FX_COMPONENT_IDLE_STATE_CALLBACK MyComponentIdleStateCallback;
A continuación, implemente la rutina de devolución de llamada de la siguiente manera:
_Use_decl_annotations_
VOID
MyComponentIdleStateCallback(
PVOID Context,
ULONG Component,
ULONG State
)
{
// Function body
}
El tipo de función PO_FX_COMPONENT_IDLE_STATE_CALLBACK se define en el archivo de encabezado Wdm.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación a la _Use_decl_annotations_
definición de la función. La _Use_decl_annotations_
anotación garantiza que se usen las anotaciones que se aplican al tipo de función PO_FX_COMPONENT_IDLE_STATE_CALLBACK en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declarar funciones mediante tipos de rol de función para controladores WDM. Para obtener información sobre _Use_decl_annotations_
, vea Anotación del comportamiento de la función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Se admite en Windows 8 y versiones posteriores de Windows. |
Plataforma de destino | Escritorio |
Encabezado | wdm.h (incluya Wudfwdm.h) |
IRQL | Se llama en IRQL <= DISPATCH_LEVEL. |