Zdarzenia wznawiania systemu
Poniższe informacje dotyczą wznawiania z uśpienia (S3) i hibernacji (S4). Aby zapoznać się ze stanami bezczynności nowoczesnej (S0 Low Power Idle), zapoznaj się z przechodzeniem między stanami bezczynności i aktywności.
Aplikacja może przywrócić komputer, który jest w stanie uśpienia do stanu roboczego przy użyciu zaplanowanego czasomierza lub zdarzenia urządzenia. Jest to nazywane zdarzeniem wake-up. Użyj obiektu czasomierza oczekiwania, aby określić czas, w którym system ma zostać wznawiany. Aby utworzyć obiekt, użyj funkcji CreateWaitableTimer. Aby ustawić czasomierz, użyj funkcji SetWaitableTimer. Parametr pDueTime określa, kiedy czasomierz zostanie zasygnalizowany. Aby określić, że system powinien wznawiać sygnał po zasygnalizatorze czasomierza, ustaw parametr fResume na wartość TRUE.
Gdy system wznawia się automatycznie z powodu zdarzenia (innego niż przełącznik zasilania lub aktywność użytkownika), system automatycznie ustawia czasomierz bezczynności na co najmniej 2 minuty. Ten czasomierz daje aplikacjom wystarczający czas na wywołanie funkcji SetThreadExecutionState, aby wskazać, że są zajęte. Tym razem system może szybko powrócić do stanu uśpienia po tym, jak komputer nie jest już wymagany. Następujące kryteria określają, czy system powraca do stanu uśpienia:
- Jeśli system zostanie automatycznie wznawiany (oznacza to, że żadne działanie użytkownika nie istnieje), zostanie on zamknięty zaraz po wygaśnięciu czasomierza bezczynności bez nadzoru, zakładając, że żadne aplikacje nie zostały wywołane SetThreadExecutionState, aby wskazać, że system jest wymagany.
- Wznawianie oparte na urządzeniach wyzwala czasomierz bezczynności nienadzorowanej domyślnie, chyba że sterownik urządzenia wskazuje obecność użytkownika. Jeśli sterownik wskazuje obecność użytkownika, używany jest czasomierz bezczynności systemu.
- Jeśli system zostanie wznawiany automatycznie, ale użytkownik udostępni nowe dane wejściowe podczas obsługi zdarzenia, system nie powróci automatycznie do uśpienia na podstawie czasomierza bezczynności nienadzorowanego. Zamiast tego system powraca do uśpienia na podstawie czasomierza bezczynności systemu.
- Jeśli system zostanie wznowiony z powodu aktywności użytkownika, system nie powróci automatycznie do uśpienia na podstawie nienadzorowanego czasomierza bezczynności. Zamiast tego system powraca do uśpienia na podstawie czasomierza bezczynności systemu.
Gdy system wznawia się automatycznie, emituje zdarzenie PBT_APMRESUMEAUTOMATIC do wszystkich aplikacji. Ponieważ użytkownik nie jest obecny, większość aplikacji nie powinna nic robić. Aplikacje obsługujące zdarzenia, takie jak serwery faksów, powinny obsługiwać swoje zdarzenia. Aby określić, czy system jest w tym stanie, wywołaj funkcję IsSystemResumeAutomatic. Po automatycznym wznawianiu systemu ekran nie jest automatycznie włączony.
Jeśli system wznawia się z powodu aktywności użytkownika, system najpierw rozgłasza zdarzenie PBT_APMRESUMEAUTOMATIC, a następnie zdarzenie PBT_APMRESUMESUSPEND. Ponadto system włączy ekran. Aplikacja powinna ponownie otworzyć pliki, które zostały zamknięte po wejściu systemu w stan uśpienia i przygotować się do wprowadzania danych przez użytkownika.
Tematy pokrewne