Udostępnij za pośrednictwem


Kryteria usypiania systemu

Tak długo, jak system określa, że istnieje aktywność użytkownika lub aplikacji, nie przejdzie w stan uśpienia. System może wykrywać pewne działania, takie jak dane wejściowe użytkownika lub komunikacja sieciowa. Istnieją jednak inne działania, których system nie może wykryć. Na przykład aplikacja prezentacji wymaga ekranu do wyświetlenia. Może się jednak wydawać, że aplikacja jest bezczynna podczas prezentacji, co powoduje wyłączenie wyświetlania przez system.

Aby powiadomić system, że aplikacja jest zajęta, użyj funkcji SetThreadExecutionState. Ta funkcja uniemożliwia systemowi wejście w stan uśpienia lub wyłączenie wyświetlania podczas działania aplikacji.

Aplikacje prezentacji i multimediów muszą wywoływać funkcję SetThreadExecutionState z ES_DISPLAY_REQUIRED, aby system wiedział, że nie powinien umieścić urządzenia wyświetlania w stanie uśpienia. Aplikacje obsługujące zdarzenia, takie jak narzędzia do zarządzania faksami przychodzącymi, muszą wywoływać SetThreadExecutionState z ES_SYSTEM_REQUIRED, obsługiwać zdarzenie, a następnie czyścić flagę, aby system mógł powrócić do uśpienia. Należy pamiętać, że większość aplikacji zwiększających produktywność nie musi używać SetThreadExecutionState, ponieważ system zwykle może określić aktywność według danych wejściowych użytkownika.

Aby zachować czas od czasu ostatniego wprowadzenia przez użytkownika, system używa czasomierza bezczynności wyświetlania i czasomierza bezczynności systemu. System porównuje czasomierze bezczynności z wartościami skonfigurowanymi w planie zasilania. Jeśli wartość czasomierza bezczynności wyświetlania jest większa niż wartość limitu czasu wyświetlania, a żadne wątki nie zażądały wyświetlania, wywołując SetThreadExecutionState z ES_DISPLAY_REQUIRED, system wyłącza wyświetlanie. Podobnie, jeśli czasomierz bezczynności systemu jest większy niż wartość limitu czasu systemu i żadne aplikacje nie zażądały systemu, wywołując SetThreadExecutionState z ES_SYSTEM_REQUIRED, system przechodzi w stan uśpienia.

System obsługuje liczbę aplikacji o nazwie SetThreadExecutionState. System śledzi każdy wątek, który wywołuje SetThreadExecutionState i odpowiednio dostosowuje licznik. Jeśli ten licznik osiągnie zero i nie było żadnych danych wejściowych użytkownika, system przechodzi w stan uśpienia.

Jeśli zasilanie jest niskie, aplikacja może zażądać interwencji użytkownika lub zażądać, aby system się zawiesił. Operację systemu można zawiesić przy użyciu funkcji SetSuspendState.

Jeśli system zostanie automatycznie wznawiany (PBT_APMRESUMEAUTOMATIC), żaden z czasomierzy nie jest odpowiedni. Aby uzyskać więcej informacji, zobacz Zdarzenia wznawiania systemu.

Wejście w tryb uśpienia

Gdy system przejdzie w stan uśpienia, automatycznie zachowa stan całego systemu i wszystkich aplikacji. W związku z tym większość aplikacji nie musi podejmować żadnych specjalnych działań. Aplikacje, które muszą wykonywać określone akcje przed przejściem systemu, mogą rejestrować się w przypadku zdarzeń zasilania.

Gdy system wysyła zdarzenie PBT_APMSUSPEND, każda aplikacja ma dwie sekundy do wykonania wszelkich niezbędnych akcji, zanim system rozpocznie przejście w stan uśpienia. Aplikacje muszą ograniczyć akcję wykonywaną w odpowiedzi na to zdarzenie, aby upewnić się, że wszystkie operacje są wykonywane w przydzielonym czasie.

Informacje o zarządzaniu energią

zdarzenia wznawiania systemu