estructura WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS (wudfddi_types.h)

[Advertencia: UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción con UMDF.

La estructura WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS contiene información proporcionada por el controlador que usa el marco cuando un dispositivo está inactivo y el sistema está en estado de trabajo del sistema (S0).

Sintaxis

typedef struct _WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS {
  ULONG                                 Size;
  WDF_POWER_POLICY_S0_IDLE_CAPABILITIES IdleCaps;
  DEVICE_POWER_STATE                    DxState;
  ULONG                                 IdleTimeout;
  WDF_POWER_POLICY_S0_IDLE_USER_CONTROL UserControlOfIdleSettings;
  WDF_TRI_STATE                         Enabled;
  WDF_TRI_STATE                         PowerUpIdleDeviceOnSystemWake;
  WDF_TRI_STATE                         ExcludeD3Cold;
} WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, *PWUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS;

Miembros

Size

Tamaño, en bytes, de esta estructura.

IdleCaps

Enumerador de tipo WDF_POWER_POLICY_S0_IDLE_CAPABILITIES que identifica la capacidad del dispositivo de reactivarse después de establecerse en un estado de bajo consumo, mientras que el sistema permanece en estado de funcionamiento (S0).

DxState

Enumerador con tipo DEVICE_POWER_STATE que identifica el estado de energía de dispositivo bajo que el dispositivo entrará después de que finalice el período de tiempo de espera de inactividad. DEVICE_POWER_STATE valores se definen en wdm.h.

IdleTimeout

La cantidad de tiempo, en milisegundos, que el dispositivo permanecerá inactivo antes de que el marco lo coloque en el estado de baja potencia proporcionado por DxState. Para usar el valor de tiempo de espera de inactividad predeterminado del marco, especifique IdleTimeoutDefaultValue. Para obtener más información sobre cuándo el marco considera que el dispositivo está inactivo, consulte Compatibilidad con el Power-Down inactivo en controladores basados en UMDF.

UserControlOfIdleSettings

Enumerador con tipo WDF_POWER_POLICY_S0_IDLE_USER_CONTROL que indica si los usuarios tienen la capacidad de modificar la configuración inactiva del dispositivo.

Enabled

Enumerador de tipo WDF_TRI_STATE que indica si el dispositivo se apagará si permanece inactivo y mientras la alimentación del sistema está en S0. Este miembro puede tener uno de los siguientes valores:

WdfTrue : el apagado está habilitado.

WdfFalse : el apagado está deshabilitado.

WdfUseDefault : el apagado se habilita inicialmente de forma predeterminada; pero si el miembro UserControlOfIdleSettings está establecido en IdleAllowUserControl, la configuración del usuario o el archivo INF del controlador invalida el valor inicial.

Si el apagado está habilitado, el dispositivo tiene una funcionalidad de reactivación y el valor de tiempo de espera de inactividad expira, el marco llama al método IPowerPolicyCallbackWakeFromS0::OnArmWakeFromS0 antes de que el dispositivo entre en un estado de bajo consumo.

PowerUpIdleDeviceOnSystemWake

Enumerador con tipo WDF_TRI_STATE que indica si el dispositivo volverá a su estado de trabajo (D0) cuando el sistema vuelva a su estado de funcionamiento (S0). Este miembro solo es válido si el controlador establece el miembro IdleCaps en IdleCannotWakeFromS0. El miembro PowerUpIdleDeviceOnSystemWake puede tener uno de los siguientes valores:

WdfTrue : si el dispositivo y el sistema están en estado de bajo consumo, el dispositivo vuelve a su estado de trabajo cuando el sistema vuelve a su estado de trabajo.

WdfFalse : si el dispositivo y el sistema están en estado de bajo consumo, el dispositivo permanece en estado de bajo consumo cuando el sistema vuelve a su estado de trabajo.

WdfUseDefault : el valor predeterminado que usa el marco si el controlador no establece un valor diferente. Este valor tiene el mismo significado que WdfFalse.

Si el miembro PowerUpIdleDeviceOnSystemWake se establece en WdfFalse o WdfUseDefault, el dispositivo vuelve a su estado de trabajo solo cuando el software accede al dispositivo, como cuando una aplicación envía una solicitud de E/S al dispositivo. Para obtener más información, consulte Un dispositivo vuelve a su estado de trabajo.

ExcludeD3Cold

Enumerador con tipo WDF_TRI_STATE que indica si el marco puede colocar el dispositivo en el estado de alimentación D3cold cuando expira el período de tiempo de espera de inactividad. El miembro ExcludeD3Cold puede tener uno de los siguientes valores:

WdfTrue : el marco moverá un dispositivo a un estado D de bajo consumo cuando expire el período de tiempo de espera de inactividad. Si ese estado D es D3, el dispositivo se moverá a D3hot. Si ExcludeD3Cold está establecido en WdfTrue, no se permitirá ninguna transición posterior de D3hot a D3cold.

WdfFalse : el dispositivo puede entrar en el estado de alimentación D3cold cuando expira el período de tiempo de espera de inactividad, si se cumplen todos los criterios siguientes:

  • El miembro DxState de esta estructura especifica PowerDeviceD3 o PowerDeviceMaximum.
  • El firmware ACPI indica que el dispositivo admite el estado de alimentación D3cold.
  • Si el controlador especificó IdleCanWakeFromS0 o IdleUsbSelectiveSuspend en el miembro IdleCaps de esta estructura, el dispositivo puede responder a un evento de reactivación externo mientras se encuentra en estado de alimentación D3cold. De lo contrario, este requisito no se aplica.
WdfUseDefault : el marco examina el DDInstall. Sección HW del archivo INF del controlador. Si están presentes las líneas siguientes, este valor tiene el mismo significado que WdfFalse:
Include = machine.inf
Needs = PciD3ColdSupported
De lo contrario, este valor tiene el mismo significado que WdfTrue.

El miembro ExcludeD3Cold está disponible a partir de la versión 1.11 de UMDF y se omite en sistemas operativos anteriores a Windows 8. Vea información adicional en Comentarios.

Comentarios

La estructura WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS se usa como entrada para IWDFDevice3::AssignS0IdleSettingsEx.

La primera vez que un controlador llama a IWDFDevice3::AssignS0IdleSettingsEx, se producen las siguientes acciones:

  • El marco almacena los valores de todos los miembros de la estructura WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .
  • Si el miembro UserControlOfIdleSettings se establece en IdleAllowUserControl y si el miembro Enabled está establecido en WdfUseDefault, el marco lee el registro para averiguar si el usuario ha habilitado el encendido del dispositivo cuando está inactivo.
Durante las llamadas posteriores a IWDFDevice3::AssignS0IdleSettingsEx, el marco solo almacena los valores de los miembros DxState, IdleTimeout y Enabled . Además, el marco almacena el valor del miembro IdleCaps sujeto a las reglas siguientes:
  • Si el controlador ha especificado alguna vez IdleCanWakeFromS0 para el valor del parámetro IdleCaps en una llamada anterior a AssignS0IdleSettingsEx, no podrá cambiar posteriormente ese valor a IdleUsbSelectiveSuspend.
  • Si el controlador ha especificado alguna vez IdleUsbSelectiveSuspend para el valor del parámetro IdleCaps en una llamada anterior a AssignS0IdleSettingsEx, no podrá cambiar posteriormente ese valor a IdleCanWakeFromS0.

Las reglas siguientes se aplican al valor especificado para el miembro DxState :

  • El valor no puede ser PowerDeviceD0.
  • En el caso de los dispositivos USB, el valor no puede ser PowerDeviceD0 o PowerDeviceD3.
  • Si especifica DevicePowerMaximum, el marco usa el valor que el controlador del bus del dispositivo proporciona en el miembro DeviceWake de su estructura WDF_DEVICE_POWER_CAPABILITIES .
  • Si el valor del miembro IdleCaps es IdleCanWakeFromS0, no puede especificar un estado de alimentación del dispositivo inferior al estado de alimentación del dispositivo en el miembro DeviceWake de la estructura WDF_DEVICE_POWER_CAPABILITIES del controlador de bus. (En otras palabras, si el valor deviceWake del controlador de bus es PowerDeviceD2, el valor dxState del controlador de función no puede ser PowerDeviceD3).
En los sistemas operativos anteriores a Windows 8, el estado de alimentación D3 indica que el dispositivo está en un estado de bajo consumo, pero que todavía se mantiene cierta potencia en el bus. A partir de Windows 8, el estado de energía D3 anterior se denomina D3hot y está disponible un nuevo estado de alimentación (D3cold). Un dispositivo puede entrar en el estado D3cold mientras el sistema está en su estado de funcionamiento (S0) o en un estado de bajo consumo. Cuando un dispositivo está en estado de alimentación D3cold, el bus está inactivo y el dispositivo debe desencadenar su propia señal de reactivación cuando una acción externa (por ejemplo, conectar un cable de red) provoca un evento de hardware.

Un dispositivo que admita el apagado inactivo puede usar el miembro ExcludeD3Cold de esta estructura para especificar si el estado de alimentación D3cold debe ser una opción permitida para el estado de energía de dispositivo bajo que el dispositivo entrará después de que finalice el período de tiempo de espera de inactividad.

Para obtener información sobre las entradas del Registro que controlan las funcionalidades inactivas de un dispositivo, consulte User Control of Device Idle and Wake Behavior in UMDF (Control de usuario del comportamiento inactivo del dispositivo y reactivación en UMDF).

Para inicializar su estructura de WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS , el controlador debe llamar a WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT.

Requisitos

Requisito Value
Versión mínima de UMDF 1.11
Encabezado wudfddi_types.h

Consulte también

IWDFDevice3::AssignS0IdleSettingsEx

WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT