enumeração WDF_POWER_POLICY_S0_IDLE_CAPABILITIES (wdfdevice.h)

[Aplica-se a KMDF e UMDF]

A enumeração WDF_POWER_POLICY_S0_IDLE_CAPABILITIES identifica os recursos aos quais um dispositivo pode dar suporte quando entra em um estado de baixa potência enquanto está em idling.

Syntax

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

Constantes

 
IdleCapsInvalid
Valor: 0
Apenas para uso interno.
IdleCannotWakeFromS0
O dispositivo não pode se ativar de um estado de baixa potência enquanto o sistema estiver em seu estado de trabalho (S0).
IdleCanWakeFromS0
O dispositivo pode se ativar de um estado de baixa potência enquanto o sistema está em seu estado de trabalho (S0).
IdleUsbSelectiveSuspend
O dispositivo está conectado a um barramento USB e dá suporte à suspensão seletiva USB. Use esse valor se o dispositivo conectado a USB der suporte à idling e ao acordar a si mesmo enquanto o computador estiver em seu estado de trabalho. Se o dispositivo USB oferecer suporte apenas à idling, use IdleCannotWakeFromS0. (Os drivers para dispositivos USB não devem especificar IdleCanWakeFromS0.) Consulte os exemplos de código na seção Exemplos a seguir.

Para o Windows XP, a estrutura dá suporte à suspensão seletiva USB somente se a estrutura USB_CONFIGURATION_DESCRIPTOR do dispositivo mostrar que o dispositivo dá suporte à ativação remota. Para o Windows Vista e versões posteriores do Windows, a estrutura dá suporte à suspensão seletiva usb se o dispositivo dá suporte ou não à ativação remota.

Comentários

A enumeração WDF_POWER_POLICY_S0_IDLE_CAPABILITIES é usada na estrutura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .

Exemplos

Os exemplos de código a seguir mostram como habilitar o suporte ocioso para um dispositivo USB. Em cada caso, a STATUS_POWER_STATE_INVALID valor retornado significa que o motorista do ônibus informou que o dispositivo não pode se ativar.

Exemplo 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 {...}

Exemplo 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 Valor
Versão mínima do KMDF 1.0
Versão mínima do UMDF 1.11
Cabeçalho wdfdevice.h (inclua Wdf.h)

Confira também

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS