Partilhar via


Critérios de suspensão do sistema

Enquanto o sistema determinar que há atividade do usuário ou do aplicativo, ele não entrará em suspensão. O sistema pode detetar certas atividades, como a entrada do usuário ou comunicações de rede. No entanto, existem outras atividades que o sistema não consegue detetar. Por exemplo, um aplicativo de apresentação requer a tela para exibição. No entanto, pode parecer que o aplicativo está ocioso durante a apresentação, fazendo com que o sistema desligue o display.

Para notificar o sistema de que seu aplicativo está ocupado, use a funçãoSetThreadExecutionState. Esta função impede que o sistema entre em suspensão ou desligue o ecrã enquanto a aplicação está em execução.

Os aplicativos de apresentação e multimídia devem chamar o função SetThreadExecutionState com ES_DISPLAY_REQUIRED para que o sistema saiba que não deve colocar o dispositivo de exibição em suspensão. Os aplicativos de manipulação de eventos, como ferramentas para gerenciar faxes de entrada, devem chamar SetThreadExecutionState com ES_SYSTEM_REQUIRED, manipular o evento e, em seguida, limpar o sinalizador para que o sistema possa voltar ao modo de suspensão. Observe que a maioria dos aplicativos de produtividade não precisa usar SetThreadExecutionState porque o sistema geralmente pode determinar a atividade pela entrada do usuário.

Para manter o tempo desde a última entrada do usuário, o sistema usa um temporizador ocioso de exibição e um temporizador ocioso do sistema. O sistema compara os temporizadores ociosos com os valores configurados no plano de energia. Se o valor do temporizador ocioso de exibição for maior do que o valor de tempo limite de exibição e nenhum thread tiver solicitado a exibição chamando SetThreadExecutionState com ES_DISPLAY_REQUIRED, o sistema desligará a exibição. Da mesma forma, se o temporizador ocioso do sistema for maior do que o valor de tempo limite do sistema e nenhum aplicativo tiver solicitado o sistema chamando SetThreadExecutionState com ES_SYSTEM_REQUIRED, o sistema entrará em suspensão.

O sistema mantém uma contagem de aplicativos que chamaram SetThreadExecutionState. O sistema rastreia cada thread que chama SetThreadExecutionState e ajusta o contador de acordo. Se este contador chegar a zero e não tiver havido qualquer entrada do utilizador, o sistema entra em modo de suspensão.

Se a energia estiver baixa, um aplicativo pode solicitar a intervenção do usuário ou solicitar que o sistema se suspenda. Você pode suspender a operação do sistema usando a funçãoSetSuspendState.

Se o sistema for ativado automaticamente (PBT_APMRESUMEAUTOMATIC), nenhum dos temporizadores é relevante. Para obter mais informações, consulte System Wake-up Events.

Entrando no sono

Quando o sistema entra em modo de suspensão, preservará automaticamente o estado de todo o sistema e de todas as aplicações. Portanto, a maioria dos aplicativos não precisa tomar nenhuma ação especial. Os aplicativos que precisam executar ações específicas antes das transições do sistema podem se registrar para eventos de energia.

Quando o sistema envia um evento PBT_APMSUSPEND, cada aplicativo tem dois segundos para executar as ações necessárias antes que o sistema inicie a transição para o modo de suspensão. Os aplicativos devem limitar a ação que tomam em resposta a esse evento para garantir que concluam todas as operações no tempo atribuído.

Sobre o gerenciamento de energia

de eventos de despertar do sistema