Kritéria režimu spánku systému
Pokud systém zjistí, že existuje aktivita uživatele nebo aplikace, nezadá se do režimu spánku. Systém může detekovat určité aktivity, jako je vstup uživatele nebo síťová komunikace. Existují však další aktivity, které systém nedokáže rozpoznat. Například prezentační aplikace vyžaduje obrazovku pro zobrazení. Může se však zdát, že aplikace je během prezentace nečinná, což způsobí, že systém vypne zobrazení.
Chcete-li upozornit systém, že je aplikace zaneprázdněna, použijte funkci SetThreadExecutionState. Tato funkce brání systému v vstupu do režimu spánku nebo vypnutí displeje, když je aplikace spuštěná.
Prezentační a multimediální aplikace musí volat funkci SetThreadExecutionState s ES_DISPLAY_REQUIRED, aby systém věděl, že by neměl umístit zobrazovací zařízení do režimu spánku. Aplikace pro zpracování událostí, jako jsou nástroje pro správu příchozích faxů, musí volat SetThreadExecutionState s ES_SYSTEM_REQUIRED, zpracovat událost a poté vymazat příznak, aby se systém mohl vrátit do režimu spánku. Všimněte si, že většina kancelářských aplikací nemusí používat SetThreadExecutionState, protože systém může obvykle určit aktivitu uživatelským vstupem.
Aby se zachoval čas od posledního vstupu uživatele, systém používá časovač nečinnosti zobrazení a časovač nečinnosti systému. Systém porovnává časovače nečinnosti s hodnotami nakonfigurovaným v schématu napájení. Pokud je hodnota časovače nečinnosti zobrazení větší než hodnota časového limitu zobrazení a žádná vlákna nepožadovala zobrazení voláním SetThreadExecutionState s ES_DISPLAY_REQUIRED, systém vypne displej. Podobně platí, že pokud je časovač nečinnosti systému větší než hodnota časového limitu systému a žádné aplikace nepožadovaly systém voláním SetThreadExecutionState s ES_SYSTEM_REQUIRED, systém přejde do režimu spánku.
Systém udržuje počet aplikací, které se nazývají SetThreadExecutionState. Systém sleduje každé vlákno, které volá SetThreadExecutionState a odpovídajícím způsobem upraví čítač. Pokud tento čítač dosáhne nuly a nebyl zadán žádný uživatelský vstup, systém přejde do režimu spánku.
Pokud je výkon nízký, může aplikace požádat o zásah uživatele nebo požádat, aby se systém pozastavil. Operaci systému můžete pozastavit pomocí funkce SetSuspendState.
Pokud se systém probudí automaticky (PBT_APMRESUMEAUTOMATIC), žádný z časovačů není relevantní. Další informace naleznete v tématu Události probuzení systému.
Vstup do režimu spánku
Když systém přejde do režimu spánku, automaticky zachová stav celého systému a všech aplikací. Většina aplikací proto nemusí provádět žádné zvláštní akce. Aplikace, které potřebují provádět konkrétní akce před přechody systému, se mohou zaregistrovat pro události napájení.
Když systém odešle PBT_APMSUSPEND událost, každá aplikace má dvě sekundy k provedení nezbytných akcí, než systém zahájí přechod do režimu spánku. Aplikace musí omezit akce, které podniknou v reakci na tuto událost, aby zajistily, že dokončí všechny operace v době, kdy jsou přiděleny.
Související témata
-
o řízení spotřeby