Compartilhar via


WDF_POWER_POLICY_S0_IDLE_CAPABILITIES enumeração (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á idling.

Sintaxe

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

Constantes

 
IdleCapsInvalid
Valor: 0
Somente 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 de 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.) Veja 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 de USB_CONFIGURATION_DESCRIPTOR do dispositivo mostrar que o dispositivo dá suporte de 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.

Observações

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, o valor retornado STATUS_POWER_STATE_INVALID significa que o motorista do ônibus informou que o dispositivo não pode se ativar sozinho.

de exemplo 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 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)

Consulte também

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS