Verhindern von Abmeldung oder Ruhezustand während eines Brennvorgangs

Wenn innerhalb einer Anwendung keine entsprechenden Vorkehrungen getroffen werden, ist es möglich, dass sich ein*e Benutzer*in während eines Brennvorgangs abmeldet. Dies führt zu einer Unterbrechung des Brennvorgangs, was zu Datenverlusten führen kann und den Datenträger möglicherweise unbrauchbar macht.

Um dieses Problem zu vermeiden, sollte die Anwendung die Nachricht WM_QUERYENDSESSION verarbeiten, die vor der Abmeldung übermittelt wird. Wenn die Anwendung diese Meldung während eines Brennvorgangs erhält, geben Sie FALSE zurück, um den Abmeldevorgang abzubrechen. Wenn der Benutzer bzw. die Benutzerin in der Anwendung entscheiden kann, ob er bzw. sie sich weiter abmeldet, sollte eine Warnung ausgegeben werden, die darauf hinweist, dass dadurch Daten verloren gehen.

Stromübergänge während des Brennvorgangs können ebenfalls potenzielle Probleme für den Erfolg einer Brennaktion verursachen. Um diese Komplikationen während des Verbrennungsprozesses zu verhindern, muss eine Anwendung wissen, wann Stromübergänge bevorstehen. Dies erreichen Sie, indem Sie die Anwendung zur Verarbeitung der Nachricht WM_POWERBROADCAST befähigen. Anwendungen, die für Windows XP oder Windows Server 2003 entwickelt wurden, können BROADCAST_QUERY_DENY als Antwort auf PBT_APMQUERYSUSPEND zurückgeben und damit den Übergang in den Ruhezustand während des Brennvorgangs verhindern.

Aufgrund von Änderungen im Energieverwaltungsmodell für Windows Vista und Windows Server 2008 wird das Ereignis PBT_APMQUERYSUSPEND nicht mehr an Anwendungen geliefert. Stattdessen wird das Ereignis PBT_APMSUSPEND ausgelöst, das einer Anwendung zwei Sekunden Zeit gibt, sich auf den Übergang vorzubereiten.

Infolge dieser Änderungen wird empfohlen, dass Anwendungen die Funktion SetThreadExecutionState aufrufen, um eine Zeitüberschreitung im Leerlauf des Systems zu verhindern, die normalerweise zum Übergang in den Ruhezustand führt. Es ist wichtig, daran zu denken, dass der Aufruf dieser Funktion mit den entsprechenden Flags nur den Übergang in den Ruhezustand des Systems verhindert, nicht aber einen bereits laufenden Ruhezustand.

Verwenden von IMAPI

SetThreadExecutionState