estructura WDF_POWER_FRAMEWORK_SETTINGS (wdfdevice.h)
[Se aplica a KMDF y UMDF]
La estructura de WDF_POWER_FRAMEWORK_SETTINGS describe la configuración del marco de administración de energía (PoFx) para dispositivos de un solo componente.
Sintaxis
typedef struct _WDF_POWER_FRAMEWORK_SETTINGS {
ULONG Size;
PFN_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE EvtDeviceWdmPostPoFxRegisterDevice;
PFN_WDFDEVICE_WDM_PRE_PO_FX_UNREGISTER_DEVICE EvtDeviceWdmPrePoFxUnregisterDevice;
PPO_FX_COMPONENT Component;
PPO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK ComponentActiveConditionCallback;
PPO_FX_COMPONENT_IDLE_CONDITION_CALLBACK ComponentIdleConditionCallback;
PPO_FX_COMPONENT_IDLE_STATE_CALLBACK ComponentIdleStateCallback;
PPO_FX_POWER_CONTROL_CALLBACK PowerControlCallback;
PVOID PoFxDeviceContext;
ULONGLONG PoFxDeviceFlags;
WDF_TRI_STATE DirectedPoFxEnabled;
} WDF_POWER_FRAMEWORK_SETTINGS, *PWDF_POWER_FRAMEWORK_SETTINGS;
Miembros
Size
Tamaño, en bytes, de esta estructura.
EvtDeviceWdmPostPoFxRegisterDevice
Puntero a la función de devolución de llamada de eventos EvtDeviceWdmPostPoFxRegisterDevice del controlador o NULL.
EvtDeviceWdmPrePoFxUnregisterDevice
Puntero a la función de devolución de llamada de eventos EvtDeviceWdmPrePoFxUnregisterDevice del controlador o NULL.
Component
Puntero a una estructura PO_FX_COMPONENT que describe el único componente del dispositivo de un solo componente o NULL. Si es NULL, KMDF solo admite F0 para este componente. Esta estructura especifica el número y los atributos de los estados F que admite el componente, así como el estado fx más profundo del que puede despertar el componente.
ComponentActiveConditionCallback
Puntero a la rutina de devolución de llamada ComponentActiveConditionCallback del controlador o NULL. El marco de administración de energía (PoFx) llama a esta función de devolución de llamada cuando un componente se activa. Mientras se encuentra en la condición Activo, se garantiza que el componente esté en F0.
ComponentIdleConditionCallback
Puntero a la función de devolución de llamada ComponentIdleConditionCallback del controlador o NULL. PoFx llama a esta función de devolución de llamada cuando un componente deja de estar inactivo. Mientras se encuentra en la condición De inactividad, el componente puede estar en cualquier estado F, incluido F0.
ComponentIdleStateCallback
Puntero a la función de devolución de llamada ComponentIdleStateCallback del controlador o NULL. PoFx llama a esta función de devolución de llamada cuando cambia el estado F del componente.
PowerControlCallback
Puntero a la función de devolución de llamada PowerControlCallback del controlador cliente o NULL. PoFx llama a esta rutina para pasar una solicitud de una operación de control de energía directamente al controlador. Si el controlador no admite ningún código de control de energía, establezca este parámetro en NULL.
PoFxDeviceContext
Puntero de contexto que el marco proporciona a ComponentActiveConditionCallback, ComponentIdleConditionCallback, ComponentIdleStateCallback y PowerControlCallback.
PoFxDeviceFlags
Valor de tipo ULONGLONG que contiene el OR bit a bit de los siguientes valores relacionados con El marco de administración de energía dirigido. Este campo está disponible a partir de la versión 1.33 de KMDF y UMDF 2.33.
PO_FX_DEVICE_FLAG_DFX_CHILDREN_OPTIONAL
Cuando la instancia de Power Framework dirigida ("DFx") está habilitada en un dispositivo, normalmente los dispositivos secundarios también habilitan DFx. Sin embargo, en algunos casos (por ejemplo, un dispositivo de software puro), un dispositivo secundario no implementa la administración de energía. Establezca esta marca para permitir que este dispositivo secundario omita DFx.
Para establecer esta marca en nombre de los dispositivos secundarios, el controlador WDF primario debe:
- Participación en DFx
- No ser un conductor de autobús
- Tener al menos un dispositivo secundario virtual creado a través de un canal de banda lateral (por ejemplo, un filtro superior o un dispositivo creado mediante una llamada a SwDeviceCreate
En el caso de los controladores que tienen como destino WDF anterior a v33, especifique la directiva INF: WdfDirectedPowerTransitionChildrenOptional, que está disponible a partir de Windows 10, versión 1903. Si el controlador especifica la directiva INF y establece esta marca, la directiva INF tiene prioridad.
PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME
Esto es necesario para implementar IRP_MN_QUERY_DEVICE_RELATIONS/PowerRelations entre dos dispositivos.
De forma predeterminada, WDF implementa una reanudación rápida, lo que significa que durante la reactivación del sistema, el propietario de la directiva de energía en una pila de dispositivos completa un S0-IRP sin esperar a solicitar y completar un D0-IRP. Esto no funciona bien con PowerRelations.
Para que PowerRelations funcione correctamente, si un dispositivo depende de otro dispositivo para entrar en D0 en primer lugar, el segundo dispositivo debe establecer esta marca para no participar en la reanudación rápida.
En algunos casos, la directiva global puede deshabilitar la reanudación rápida globalmente incluso si esta marca no está establecida.
DirectedPoFxEnabled
Enumerador con tipo WDF_TRI_STATE que indica si el dispositivo habilita Directed Power Management Framework (DFx). Disponible a partir de la versión 1.33 de KMDF y UMDF 2.33.
WdfTrue : DFx está habilitado. WdfFalse : DFx está deshabilitado. WdfUseDefault : valor predeterminado si el controlador no establece uno. Este valor tiene el mismo significado que WdfTrue.
Directed PoFx (DFx) está disponible a partir de Windows 10, versión 1903 como opción para los controladores que usan SystemManagedIdleTimeout o SystemManagedIdleTimeoutWithHint.
- Para un controlador que tenga como destino WDF anterior a la versión 31, establezca la directiva INF WdfDirectedPowerTransitionEnable en 1 para participar en DFx.
- Para un controlador destinado a WDF v31+, DFx está habilitado de forma predeterminada. El controlador puede establecer WdfDirectedPowerTransitionEnable en cero para no participar en DFx.
- Para un controlador destinado a WDF v33+, DFx también está habilitado de forma predeterminada. El controlador puede establecer WdfDirectedPowerTransitionEnable en cero o establecer este campo en WdfFalse (recomendado) para no participar en DFx. Si se establecen ambos, la directiva INF tiene prioridad.
Comentarios
La estructura WDF_POWER_FRAMEWORK_SETTINGS se usa una entrada para WdfDeviceWdmAssignPowerFrameworkSettings.
Para inicializar su estructura de WDF_POWER_FRAMEWORK_SETTINGS , el controlador debe llamar a WDF_POWER_FRAMEWORK_SETTINGS_INIT.
Para UMDF, solo se usan Size, PoFxDeviceFlags y DirectedPoFxEnabled . Se omiten otros campos y se deben establecer en cero. El marco lo hace automáticamente cuando un controlador UMDF llama a WDF_POWER_FRAMEWORK_SETTINGS_INIT.
Para obtener más información, consulte Compatibilidad con estados de energía funcionales e información general de Power Management Framework.
Esta estructura no es aplicable a los controladores de cliente KMDF para dispositivos de varios componentes.
Requisitos
Requisito | Value |
---|---|
Versión mínima de KMDF | 1.11 |
Versión mínima de UMDF | 2,33 |
Encabezado | wdfdevice.h (incluya Wdf.h) |
Consulte también
EvtDeviceWdmPostPoFxRegisterDevice
EvtDeviceWdmPrePoFxUnregisterDevice