Compartir a través de


enumeración WDF_POWER_POLICY_S0_IDLE_CAPABILITIES (wdfdevice.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 está inactivo.

Sintaxis

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

Constantes

 
IdleCapsInvalid
Valor: 0
Solo para uso interno.
IdleCannotWakeFromS0
El dispositivo no se puede reactivar desde un estado de baja potencia mientras el sistema está en su estado de funcionamiento (S0).
IdleCanWakeFromS0
El dispositivo puede reactivarse desde un estado de baja potencia mientras el sistema está en su estado de funcionamiento (S0).
IdleUsbSelectiveSuspend
El dispositivo está conectado a un bus USB y admite suspensión selectiva USB. Use este valor si el dispositivo conectado a USB admite el idiote y la reactivación mientras el equipo está en su estado de trabajo. Si el dispositivo USB solo admite 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 reactivación remota. Para Windows Vista y versiones posteriores de Windows, el marco de trabajo admite la suspensión selectiva de USB tanto si el dispositivo admite la reactivación remota como si no.

Observaciones

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 bus ha informado de que el dispositivo no se puede reactivar.

ejemplo de KMDF de

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 de

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 Valor
versión mínima de KMDF 1.0
versión mínima de UMDF 1.11
encabezado de wdfdevice.h (incluya Wdf.h)

Consulte también

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS