enumeración WDF_POWER_POLICY_S0_IDLE_CAPABILITIES (wudfddi_types.h)

[Se aplica a KMDF y UMDF]

La enumeración de WDF_POWER_POLICY_S0_IDLE_CAPABILITIES identifica las funcionalidades que un dispositivo puede admitir cuando entra en un estado de baja potencia mientras se está quedando inactivo.

Syntax

typedef enum _WDF_POWER_POLICY_S0_IDLE_CAPABILITIES {
  IdleCapsInvalid,
  IdleCannotWakeFromS0,
  IdleCanWakeFromS0,
  IdleUsbSelectiveSuspend
} WDF_POWER_POLICY_S0_IDLE_CAPABILITIES;

Constantes

 
IdleCapsInvalid
Solo para uso interno.
IdleCannotWakeFromS0
El dispositivo no se puede reactivar desde un estado de bajo consumo mientras el sistema está en estado de funcionamiento (S0).
IdleCanWakeFromS0
El dispositivo se puede reactivar desde un estado de bajo consumo mientras el sistema está en su estado de funcionamiento (S0).
IdleUsbSelectiveSuspend
El dispositivo está conectado a un bus USB y admite la suspensión selectiva USB. Use este valor si el dispositivo conectado a USB admite la identificación y la reactivación mientras el equipo está en estado de funcionamiento. Si el dispositivo USB solo admite el idling, use IdleCannotWakeFromS0. (Los controladores para dispositivos USB no deben especificar IdleCanWakeFromS0). Consulte los ejemplos de código en la sección Ejemplos siguientes.

Para Windows XP, el marco admite la suspensión selectiva usb solo si la estructura de USB_CONFIGURATION_DESCRIPTOR del dispositivo muestra que el dispositivo admite la reactivación remota. En el caso de Windows Vista y versiones posteriores de Windows, el marco admite la suspensión selectiva usb si el dispositivo admite o no la reactivación remota.

Comentarios

La enumeración WDF_POWER_POLICY_S0_IDLE_CAPABILITIES se usa en la estructura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .

Ejemplos

En los ejemplos de código siguientes se muestra cómo habilitar la compatibilidad inactiva con un dispositivo USB. En cada caso, el STATUS_POWER_STATE_INVALID valor devuelto significa que el controlador de autobús ha informado de que el dispositivo no se puede reactivar.

Ejemplo de KMDF

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(&idleSettings,
                                           IdleUsbSelectSuspend);
status = WdfDeviceAssignS0IdleSettings(device,
                                       &idleSettings);
if (status == STATUS_POWER_STATE_INVALID){
    //
    // The device probably does not support wake. 
    // It might support idle without wake.
    //
    idleSettings.IdleCaps = IdleCannotWakeFromS0;
    status = WdfDeviceAssignS0IdleSettings(device,
                                           &IdleSettings);
    if (!NT_SUCCESS(status) {...}
 }
else {...}

Ejemplo de UMDF

hr = pIWDFDevice2->AssignS0IdleSettings(IdleUsbSelectSuspend,
                                        PowerDeviceD3,
                                        IDLEWAKE_TIMEOUT_MSEC,
                                        IdleAllowUserControl,
                                        WdfTrue);
if (hr == HRESULT_FROM_NT(STATUS_POWER_STATE_INVALID)){
    //
    // The device probably does not support wake. 
    // It might support idle without wake.
    //
    hr = pIWDFDevice2->AssignS0IdleSettings(IdleCannotWakeFromS0,
                                         PowerDeviceD3,
                                         IDLEWAKE_TIMEOUT_MSEC,
                                         IdleAllowUserControl,
                                         WdfTrue);
    if (!SUCCEEDED(hr)) {...}
}
else {...}

Requisitos

Requisito Value
Versión mínima de KMDF 1.0
Versión mínima de UMDF 1.11
Encabezado wudfddi_types.h (incluya Wdf.h)

Consulte también

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS