Systemreaktivierungsereignisse
Die folgenden Informationen gelten für Aktivierungen aus dem Ruhezustand (S3) und Ruhezustand (S4). Informationen zu Aktivierungen aus dem modernen Standbymodus (S0 Low Power Im Leerlauf) finden Sie unter Übergang zwischen Leerlauf und Aktivem Zustand.
Ihre Anwendung kann einen Computer, der sich im Ruhezustand befindet, mithilfe eines geplanten Timers oder eines Geräteereignisses in den Betriebszustand wiederherstellen. Dies wird als Aktivierungsereignis bezeichnet. Verwenden Sie ein wartebares Timerobjekt , um den Zeitpunkt anzugeben, zu dem das System aktiviert werden soll. Verwenden Sie zum Erstellen des Objekts die CreateWaitableTimer-Funktion . Verwenden Sie zum Festlegen des Timers die SetWaitableTimer-Funktion . Der Parameter pDueTime gibt an, wann der Timer signalisiert wird. Um anzugeben, dass das System aktiviert werden soll, wenn der Timer signalisiert wird, legen Sie den Parameter fResume auf TRUE fest.
Wenn das System aufgrund eines Ereignisses (außer Netzschalter oder Benutzeraktivität) automatisch aktiviert wird, legt das System automatisch einen Unbeaufsichtigten Leerlauftimer auf mindestens 2 Minuten fest. Dieser Timer bietet Anwendungen genügend Zeit, um die SetThreadExecutionState-Funktion aufzurufen, um anzugeben, dass sie ausgelastet sind. Diese Zeit ermöglicht es dem System, schnell in den Ruhezustand zurückzukehren, nachdem der Computer nicht mehr benötigt wird. Anhand der folgenden Kriterien wird bestimmt, ob das System in den Ruhezustand zurückkehrt:
- Wenn das System automatisch reaktiviert wird (d. h. keine Benutzeraktivität vorhanden ist), wird es heruntergefahren, sobald der unbeaufsichtigte Leerlauftimer abläuft, sofern keine Anwendungen SetThreadExecutionState aufgerufen haben, um anzugeben, dass das System erforderlich ist.
- Gerätebasierte Aktivierungen lösen standardmäßig den unbeaufsichtigten Leerlauftimer aus, es sei denn, der Gerätetreiber gibt die Anwesenheit des Benutzers an. Wenn der Treiber die Anwesenheit des Benutzers angibt, wird der Leerlauftimer des Systems verwendet.
- Wenn das System automatisch reaktiviert wird, der Benutzer aber während der Behandlung des Ereignisses neue Eingaben bereitstellt, kehrt das System basierend auf dem unbeaufsichtigten Leerlauftimer nicht automatisch in den Ruhezustand zurück. Stattdessen kehrt das System basierend auf dem Leerlauftimer des Systems in den Ruhezustand zurück.
- Wenn das System aufgrund von Benutzeraktivitäten reaktiviert wird, kehrt das System nicht automatisch in den Ruhezustand zurück, basierend auf dem unbeaufsichtigten Leerlauftimer. Stattdessen kehrt das System basierend auf dem Leerlauftimer des Systems in den Ruhezustand zurück.
Wenn das System automatisch aktiviert wird, wird das PBT_APMRESUMEAUTOMATIC-Ereignis an alle Anwendungen übertragen. Da der Benutzer nicht anwesend ist, sollten die meisten Anwendungen nichts tun. Ereignisbehandlungsanwendungen, z. B. Faxserver, sollten ihre Ereignisse behandeln. Rufen Sie die IsSystemResumeAutomatic-Funktion auf, um zu bestimmen, ob sich das System in diesem Zustand befindet. Wenn das System automatisch aktiviert wird, wird die Anzeige nicht automatisch aktiviert.
Wenn das System aufgrund einer Benutzeraktivität reaktiviert wird, sendet das System zuerst das PBT_APMRESUMEAUTOMATIC-Ereignis , gefolgt von einem PBT_APMRESUMESUSPEND-Ereignis . Darüber hinaus schaltet das System die Anzeige ein. Ihre Anwendung sollte Dateien erneut öffnen, die geschlossen wurden, wenn das System in den Ruhezustand versetzt wurde, und sich auf Benutzereingaben vorbereiten.
Zugehörige Themen