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