Função WdfDeviceGetSystemPowerAction (wdfdevice.h)
[Aplica-se a KMDF e UMDF]
O método WdfDeviceGetSystemPowerAction retorna a ação de energia do sistema , se houver, que está ocorrendo no momento para o computador.
Sintaxe
POWER_ACTION WdfDeviceGetSystemPowerAction(
[in] WDFDEVICE Device
);
Parâmetros
[in] Device
Um identificador para um objeto de dispositivo de estrutura.
Valor de retorno
WdfDeviceGetSystemPowerAction retorna um valor de enumerador tipo POWER_ACTION. O valor indica a ação de energia do sistema que está ocorrendo no momento para o computador. Para obter mais informações, consulte a seção Comentários a seguir. A enumeração POWER_ACTION é definida em wdm.h.
Uma verificação de bug ocorre se o driver fornece um identificador de objeto inválido.
Observações
A partir do WDF versão 1.31/2.31 (conhecido como "v31"), WdfDeviceGetSystemPowerAction foi atualizado para relatar com mais precisão a ação de energia do sistema quando o dispositivo for o proprietário da política de energia. Os drivers precisam ser recompilados com v31 ou posterior para obter o seguinte novo comportamento:
Se o dispositivo entrar ou sair de D0 devido ao S0 Idle (consulte WdfDeviceAssignS0IdleSettings) enquanto uma transição de energia do sistema não relacionada estiver em andamento, WdfDeviceGetSystemPowerAction poderá retornar PowerActionSleep . Isso é corrigido na v31 e agora retorna PowerActionNone.
Quando o sistema é ativado do Hybrid Sleep (suspensão com um arquivo de hibernação), antes da v31, WdfDeviceGetSystemPowerAction sempre retornado PowerActionHibernate. Isso é corrigido na v31 e agora ele retorna:
- PowerActionSleep se ele acordar sem perda de energia, o que significa que o sistema permaneceu em S3
- PowerActionHibernate se ele for ativado após a perda de energia, o que significa que o sistema foi retomado do arquivo de hibernação
O método WdfDeviceGetSystemPowerAction permite que um driver determine se a transição de energia de um dispositivo está ocorrendo porque o dispositivo está ocioso (ou acordando) ou porque todo o computador está inserindo (ou deixando) um estado de baixa potência.
O driver deve chamar WdfDeviceGetSystemPowerAction somente das funções de retorno de chamada de evento que a estrutura chama quando o dispositivo está entrando em um estado de baixa potência ou retornando ao seu estado de trabalho.
O valor retornado WdfDeviceGetSystemPowerAction depende das seguintes situações:
- Se o computador estiver inserindo um estado de baixa potência quando o driver chamar WdfDeviceGetSystemPowerAction, o método retornará o motivo pelo qual o computador está entrando no estado de baixa potência. Por exemplo, o método retornará PowerActionSleep se o computador estiver inserindo seu estado de baixa potência S1, S2 ou S3.
- Se o computador estiver retornando ao seu estado de trabalho (S0) de um estado de baixa potência quando o driver chamar WdfDeviceGetSystemPowerAction, o método retornará o motivo pelo qual o computador entrou no estado de baixa potência. Por exemplo, o método retornará PowerActionSleep se o computador estiver deixando seu estado de baixa potência S1, S2 ou S3.
- Se o computador estiver habilitando (depois de ter sido desativado) quando o driver chamar WdfDeviceGetSystemPowerAction, o método retornará PowerActionNone.
- Se o dispositivo estiver inserindo um estado ocioso de baixa potência ou retornando ao estado de trabalho (D0) quando o driver chama WdfDeviceGetSystemPowerAction, enquanto o restante do sistema permanece em seu estado de trabalho (S0), o método retorna PowerActionNone.
- Se o computador e o dispositivo estiverem em seus estados de trabalho quando o driver chamar WdfDeviceGetSystemPowerAction, o método retornará PowerActionNone.
Exemplos
O exemplo de código a seguir obtém a atividade de transição de energia que está ocorrendo no momento para o computador.
POWER_ACTION SysPowerAction;
SysPowerAction = WdfDeviceGetSystemPowerAction(device);
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Universal |
versão mínima do KMDF | 1.9 |
versão mínima do UMDF | 2.0 |
cabeçalho | wdfdevice.h (inclua Wdf.h) |
biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
regras de conformidade de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |