estructura PO_FX_DEVICE_V3 (wdm.h)

La estructura 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 no participar en Direct PoFx.

Entre los valores de marca posibles se incluyen:

Bandera 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 se reanude el D0-IRP 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 se complete la S0-IRP antes de que se reanude el D0-IRP 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 que implementa el controlador de dispositivo.

ComponentIdleConditionCallback

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

ComponentIdleStateCallback

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

DevicePowerRequiredCallback

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

DevicePowerNotRequiredCallback

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

PowerControlCallback

Puntero a la PowerControlCallback rutina de devolución de llamada 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 devoluciones de llamada DirectedPower* al registrarse en 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 el 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 energía actual del dispositivo. Este contexto es opaco para PoFx.

ComponentCount

Número de elementos de la matriz Componentes de. 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 potencia 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.

Observaciones

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

Cada elemento de Components matriz describe los atributos de estado de energía de un componente del dispositivo. Cada componente del dispositivo se identifica mediante su Componentes índice de matriz. Rutinas como poFxActivateComponent y PoFxCompleIdleCondition usar 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 ComponentIdleStateCallback, ComponentActiveConditionCallbacky ComponentIdleConditionCallback rutinas. 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 versiones anteriores. En el caso de los controladores WDF, estas marcas se pueden proporcionar mediante el PoFxDeviceFlags campo de WDF_POWER_FRAMEWORK_SETTINGS.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 10, versión 1903
encabezado de 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

PoFxCompleIdleCondition

poFxRegisterDevice

PowerControlCallback