Eventi di riattivazione del sistema
Le informazioni seguenti si applicano alle riattivazioni dal sonno (S3) e all'ibernazione (S4). Per le riattivazioni da Modern Standby (S0 Low Power Idle), fare riferimento alla transizione tra stati inattive e attivi.
L'applicazione può ripristinare uno stato di sospensione di un computer in stato di sospensione usando un timer pianificato o un evento del dispositivo. Questo evento è noto come evento di riattivazione. Utilizzare un oggetto timer waitable per specificare l'ora in cui deve essere riattivato il sistema. Per creare l'oggetto, usare la funzione CreateWaitableTimer . Per impostare il timer, usare la funzione SetWaitableTimer . Il parametro pDueTime specifica quando verrà segnalato il timer. Per specificare che il sistema deve riattivarsi quando viene segnalato il timer, impostare il parametro fResume su TRUE.
Quando il sistema viene riattivato automaticamente a causa di un evento (diverso dall'interruttore di alimentazione o dall'attività dell'utente), il sistema imposta automaticamente un timer di inattività automatica su almeno 2 minuti. Questo timer offre alle applicazioni tempo sufficiente per chiamare la funzione SetThreadExecutionState per indicare che sono occupati. Questo tempo consente al sistema di tornare rapidamente allo stato di sospensione dopo che il computer non è più necessario. I criteri seguenti determinano se il sistema torna allo stato di sospensione:
- Se il sistema si riattiva automaticamente (ovvero non è presente alcuna attività utente), viene arrestato non appena scade il timer di inattività automatica, presupponendo che nessuna applicazione abbia chiamato SetThreadExecutionState per indicare che il sistema è necessario.
- Le riattivazioni basate su dispositivo attivano il timer di inattività automatica per impostazione predefinita, a meno che il driver di dispositivo non indichi la presenza dell'utente. Se il driver indica la presenza dell'utente, viene usato il timer di inattività del sistema.
- Se il sistema viene riattivato automaticamente, ma l'utente fornisce un nuovo input mentre l'evento viene gestito, il sistema non torna automaticamente in sospensione in base al timer di inattività automatica. Al contrario, il sistema torna a dormire in base al timer di inattività del sistema.
- Se il sistema si riattiva a causa dell'attività dell'utente, il sistema non torna automaticamente in sospensione in base al timer di inattività automatica. Al contrario, il sistema torna in sospensione in base al timer di inattività del sistema.
Quando il sistema viene riattivato automaticamente, trasmette l'evento PBT_APMRESUMEAUTOMATIC a tutte le applicazioni. Poiché l'utente non è presente, la maggior parte delle applicazioni non deve eseguire alcuna operazione. Le applicazioni di gestione degli eventi, ad esempio i server fax, devono gestire i relativi eventi. Per determinare se il sistema è in questo stato, chiamare la funzione IsSystemResumeAutomatic . Quando il sistema si riattiva automaticamente, lo schermo non viene attivato automaticamente.
Se il sistema si riattiva a causa dell'attività dell'utente, il sistema trasmetterà prima l'evento PBT_APMRESUMEAUTOMATIC seguito da un evento PBT_APMRESUMESUSPEND . Inoltre, il sistema accenderà lo schermo. L'applicazione deve riaprire i file chiusi quando il sistema è entrato in sospensione e prepararsi per l'input dell'utente.
Argomenti correlati