estructura PO_FX_DEVICE_V3 (wdm.h)

La estructura de PO_FX_DEVICE_V3 describe los atributos de energía de un dispositivo para el marco de administración de energía ( PoFx), DFx (Dirigido PoFx)

Sintaxis

typedef struct _PO_FX_DEVICE_V3 {
  ULONG                                      Version;
  ULONGLONG                                  Flags;
  PPO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK ComponentActiveConditionCallback;
  PPO_FX_COMPONENT_IDLE_CONDITION_CALLBACK   ComponentIdleConditionCallback;
  PPO_FX_COMPONENT_IDLE_STATE_CALLBACK       ComponentIdleStateCallback;
  PPO_FX_DEVICE_POWER_REQUIRED_CALLBACK      DevicePowerRequiredCallback;
  PPO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK  DevicePowerNotRequiredCallback;
  PPO_FX_POWER_CONTROL_CALLBACK              PowerControlCallback;
  PPO_FX_DIRECTED_POWER_UP_CALLBACK          DirectedPowerUpCallback;
  PPO_FX_DIRECTED_POWER_DOWN_CALLBACK        DirectedPowerDownCallback;
  ULONG                                      DirectedFxTimeoutInSeconds;
  PVOID                                      DeviceContext;
  ULONG                                      ComponentCount;
  PO_FX_COMPONENT_V2                         Components[ANYSIZE_ARRAY];
} PO_FX_DEVICE_V3, *PPO_FX_DEVICE_V3;

Miembros

Version

Número de versión de esta estructura. Si el controlador se registrará para obtener compatibilidad con energía dirigida con DFx, establezca este miembro en PO_FX_VERSION_V3.

Flags

Controla si los dispositivos secundarios directos y los dispositivos secundarios de energía pueden optar por no participar en Direct PoFx.

Entre los valores de marca posibles se incluyen:

Marca Descripción
PO_FX_DEVICE_FLAG_DIRECT_CHILDREN_OPTIONAL Permite que los dispositivos secundarios directos de este dispositivo admitan opcionalmente Direct PoFx. Si no se establece, todos los elementos secundarios directos deben admitir Direct PoFx para que este dispositivo admita totalmente Direct PoFx.
PO_FX_DEVICE_FLAG_POWER_CHILDREN_OPTIONAL Permite que los dispositivos secundarios de energía de este dispositivo admitan opcionalmente Directed PoFx. Si no se proporciona, todos los elementos secundarios de energía deben admitir Directed PoFx para que este dispositivo admita totalmente Directed PoFx.
PO_FX_DEVICE_FLAG_DFX_CHILDREN_OPTIONAL Establece PO_FX_DEVICE_FLAG_DIRECT_CHILDREN_OPTIONAL y PO_FX_DEVICE_FLAG_POWER_CHILDREN_OPTIONAL
PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME Obliga a PoFx a evitar que el S0-IRP se complete antes de que D0-IRP se reanude desde un estado del sistema, como Hibernate o Sleep. Mutuamente excluyente con PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME.
PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME Obliga a PoFx a permitir que el S0-IRP se complete antes de que D0-IRP se reanude desde un estado del sistema, como Hibernate o Sleep. Mutuamente excluyente con PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME.

ComponentActiveConditionCallback

Puntero a la rutina de devolución de llamada ComponentActiveConditionCallback implementada por el controlador de dispositivo.

ComponentIdleConditionCallback

Puntero a la rutina de devolución de llamada ComponentIdleConditionCallback implementada por el controlador de dispositivo.

ComponentIdleStateCallback

Puntero a la rutina de devolución de llamada ComponentIdleStateCallback implementada por el controlador de dispositivo.

DevicePowerRequiredCallback

Puntero a la rutina de devolución de llamada DevicePowerRequiredCallback implementada por el controlador de dispositivo.

DevicePowerNotRequiredCallback

Puntero a la rutina de devolución de llamada DevicePowerNotRequiredCallback implementada por el controlador de dispositivo.

PowerControlCallback

Puntero a la rutina de devolución de llamada powerControlCallback implementada por el controlador de dispositivo.

DirectedPowerUpCallback

Puntero a la rutina de devolución de llamada PO_FX_DIRECTED_POWER_UP_CALLBACK implementada por el controlador de dispositivo. Un dispositivo solo puede proporcionar las DirectedPower* devoluciones de llamada al registrarse para PoFx. No es necesario implementar el resto de las devoluciones de llamada de PoFx.

DirectedPowerDownCallback

Puntero a la rutina de devolución de llamada PO_FX_DIRECTED_POWER_DOWN_CALLBACK implementada por el controlador de dispositivo.

DirectedFxTimeoutInSeconds

Proporciona una sugerencia al marco que especifica un tiempo de espera recomendado en segundos en los que el dispositivo debe haber inactivo después de que la actividad de software ya no esté presente. El valor predeterminado es 2 minutos.

DeviceContext

Puntero a un contexto de dispositivo asignado por el autor de la llamada. Este puntero se pasa como parámetro a cada función de devolución de llamada implementada por el controlador a la que apunta esta estructura. El controlador de dispositivo usa este contexto para almacenar información sobre el estado de alimentación actual del dispositivo. Este contexto es opaco para PoFx.

ComponentCount

Número de elementos de la matriz Components . Además, este miembro especifica el número de componentes del dispositivo.

Components[ANYSIZE_ARRAY]

Este miembro es el primer elemento de una matriz de uno o varios elementos PO_FX_COMPONENT_V2. Si la matriz contiene más de un elemento, los elementos adicionales siguen inmediatamente la estructura PO_FX_DEVICE_V2 . La matriz contiene un elemento para cada componente del dispositivo. El estado de energía Fx de cada componente se puede controlar independientemente de los estados de potencia fx de los demás componentes del dispositivo. La constante ANYSIZE_ARRAY se define como 1 en el archivo de encabezado Ntdef.h.

Comentarios

Para registrar un dispositivo con PoFx, un controlador llama a la rutina PoFxRegisterDevice y proporciona, como parámetro, un puntero a una estructura de PO_FX_DEVICE que describe el dispositivo. Para usar PoFx, pero no DFx, regístrese en PoFx mediante PO_FX_DEVICE_V2 estructura o estructura PO_FX_DEVICE_V3.

Cada elemento de la matriz Components describe los atributos de estado de energía de un componente del dispositivo. Cada componente del dispositivo se identifica mediante su índice de matriz Components . Las rutinas como PoFxActivateComponent y PoFxCompleIdleCondition usan el índice de matriz de un componente para identificar el componente.

No se requiere un controlador de dispositivo para implementar las ocho rutinas de devolución de llamada. El controlador puede establecer un puntero de función en la estructura PO_FX_DEVICE en NULL si el controlador no implementa la rutina de devolución de llamada correspondiente. Sin embargo, se deben implementar ciertas rutinas de devolución de llamada. En concreto, si uno o varios componentes de un dispositivo tienen más de un estado Fx, el controlador debe implementar rutinas ComponentIdleStateCallback, ComponentActiveConditionCallback y ComponentIdleConditionCallback . De lo contrario, se produce un error en el registro del dispositivo y PoFxRegisterDevice devuelve STATUS_INVALID_PARAMETER.

Si un controlador no proporciona una de PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME o PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME el sistema se reservará a la configuración predeterminada de la plataforma. La configuración predeterminada es PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME para plataformas x86/x64 y PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME para plataformas ARM32/ARM64. Estas marcas solo se respetan para Win11 22000+ y se omiten silenciosamente para las versiones anteriores. Para los controladores WDF, estas marcas se pueden proporcionar mediante el campo PoFxDeviceFlags de WDF_POWER_FRAMEWORK_SETTINGS.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1903
Encabezado wdm.h

Consulte también

/windows-hardware/drivers/kernel/introduction-to-the-directed-power-management-framework

ComponentActiveConditionCallback

ComponentIdleConditionCallback

ComponentIdleStateCallback

DevicePowerNotRequiredCallback

DevicePowerRequiredCallback

PO_FX_COMPONENT

PoFxActivateComponent

PoFxCompleteIdleCondition

PoFxRegisterDevice

PowerControlCallback