Delen via


Criteria voor systeemsluimerstand

Zolang het systeem bepaalt dat er gebruikers- of toepassingsactiviteit is, wordt de slaapstand niet ingevoerd. Het systeem kan bepaalde activiteiten detecteren, zoals gebruikersinvoer of netwerkcommunicatie. Er zijn echter andere activiteiten die het systeem niet kan detecteren. Voor een presentatietoepassing is bijvoorbeeld het scherm vereist voor weergave. Het kan echter voorkomen dat de toepassing inactief is tijdens de presentatie, waardoor het systeem de weergave uitschakelt.

Gebruik de functie SetThreadExecutionState om het systeem op de hoogte te stellen dat uw toepassing bezet is. Met deze functie voorkomt u dat het systeem de slaapstand invoert of de weergave uitschakelt terwijl de toepassing wordt uitgevoerd.

Presentatie- en multimediatoepassingen moeten de functie SetThreadExecutionState aanroepen met ES_DISPLAY_REQUIRED, zodat het systeem weet dat het beeldscherm niet in de slaapstand moet worden gezet. Toepassingen voor gebeurtenisafhandeling, zoals hulpprogramma's voor het beheren van binnenkomende faxen, moeten SetThreadExecutionState- aanroepen met ES_SYSTEM_REQUIRED, de gebeurtenis afhandelen en vervolgens de vlag wissen, zodat het systeem weer in de slaapstand kan. Houd er rekening mee dat de meeste productiviteitstoepassingen geen gebruik hoeven te maken van SetThreadExecutionState omdat het systeem meestal activiteit kan bepalen door gebruikersinvoer.

Om de tijd te behouden sinds de laatste invoer van de gebruiker, gebruikt het systeem een display inactiviteit timer en een systeem inactiviteit timer. Het systeem vergelijkt de niet-actieve timers met de waarden die zijn geconfigureerd in het energiebeheerschema. Als de timerwaarde voor niet-actieve weergave groter is dan de time-outwaarde van de weergave en er geen threads hebben gevraagd om de weergave door SetThreadExecutionState- met ES_DISPLAY_REQUIREDaan te roepen, wordt de weergave uitgeschakeld. Als de timer voor inactiviteit van het systeem groter is dan de time-outwaarde van het systeem en er geen toepassingen het systeem hebben aangevraagd door SetThreadExecutionState- met ES_SYSTEM_REQUIREDaan te roepen, wordt de slaapstand van het systeem geactiveerd.

Het systeem onderhoudt een aantal toepassingen die SetThreadExecutionStatehebben aangeroepen. Het systeem houdt elke thread bij die SetThreadExecutionState aanroept en past de teller dienovereenkomstig aan. Als deze teller nul bereikt en er geen gebruikersinvoer is geweest, gaat het systeem in de slaapstand.

Als de stroom laag is, kan een toepassing tussenkomst van de gebruiker aanvragen of aanvragen dat het systeem zichzelf onderbreekt. U kunt de systeembewerking onderbreken met behulp van de functie SetSuspendState.

Als het systeem automatisch wordt geactiveerd (PBT_APMRESUMEAUTOMATIC), zijn geen van de timers relevant. Zie System Wake-up Eventsvoor meer informatie.

Slaapstand invoeren

Wanneer het systeem in de slaapstand komt, blijft de status van het hele systeem en alle toepassingen automatisch behouden. Daarom hoeven de meeste toepassingen geen speciale actie te ondernemen. Toepassingen die specifieke acties moeten uitvoeren voordat de systeemovergangen zich kunnen registreren voor energie-gebeurtenissen.

Wanneer het systeem een PBT_APMSUSPEND gebeurtenis verzendt, heeft elke toepassing twee seconden om alle benodigde acties uit te voeren voordat het systeem de overgang naar de slaapstand start. Toepassingen moeten beperken welke actie ze ondernemen als reactie op deze gebeurtenis om ervoor te zorgen dat ze alle bewerkingen in de toegewezen tijd voltooien.

over energiebeheer

Systeem wake-upgebeurtenissen