Share via


RegisterApplicationRecoveryCallback-Funktion (winbase.h)

Registriert die aktive instance einer Anwendung für die Wiederherstellung.

Syntax

HRESULT RegisterApplicationRecoveryCallback(
  [in]           APPLICATION_RECOVERY_CALLBACK pRecoveyCallback,
  [in, optional] PVOID                         pvParameter,
  [in]           DWORD                         dwPingInterval,
  [in]           DWORD                         dwFlags
);

Parameter

[in] pRecoveyCallback

Ein Zeiger auf die Wiederherstellungsrückruffunktion. Weitere Informationen finden Sie unter ApplicationRecoveryCallback.

[in, optional] pvParameter

Ein Zeiger auf eine Variable, die an die Rückruffunktion übergeben werden soll. Kann NULL sein.

[in] dwPingInterval

Das Wiederherstellungs-Pingintervall in Millisekunden. Standardmäßig beträgt das Intervall 5 Sekunden (RECOVERY_DEFAULT_PING_INTERVAL). Das maximale Intervall beträgt 5 Minuten. Wenn Sie null angeben, wird das Standardintervall verwendet.

Sie müssen die ApplicationRecoveryInProgress-Funktion innerhalb des angegebenen Intervalls aufrufen, um arr anzugeben, dass Sie noch aktiv wiederhergestellt werden. Andernfalls beendet WER die Wiederherstellung. In der Regel führen Sie die Wiederherstellung in einer Schleife durch, wobei jede Iteration nicht länger als das Pingintervall dauert. Jede Iteration führt einen Wiederherstellungsblock aus, gefolgt von einem Aufruf von ApplicationRecoveryInProgress. Da Sie auch ApplicationRecoveryInProgress verwenden, um zu bestimmen, ob der Benutzer die Wiederherstellung abbrechen möchte, sollten Sie ein kleineres Intervall in Betracht ziehen, damit Sie nicht unnötig viel Arbeit ausführen.

[in] dwFlags

Für die zukünftige Verwendung reserviert. Auf NULL festlegen.

Rückgabewert

Diese Funktion gibt S_OK bei Erfolg oder einen der folgenden Fehlercodes zurück.

Rückgabecode Beschreibung
E_FAIL
Interner Fehler; Fehler bei der Registrierung.
E_INVALIDARG
Das Pingintervall darf nicht mehr als fünf Minuten betragen.

Hinweise

Wenn die Anwendung auf eine nicht behandelte Ausnahme stößt oder nicht mehr reagiert, ruft Windows-Fehlerberichterstattung (WER) den angegebenen Wiederherstellungsrückruf auf. Sie sollten den Rückruf verwenden, um Daten und Zustandsinformationen zu speichern. Sie können die Informationen verwenden, wenn Sie auch die RegisterApplicationRestart-Funktion aufrufen, um anzufordern, dass WER die Anwendung neu startet.

WER ruft Ihren Wiederherstellungsrückruf nicht auf, wenn ein Installationsprogramm eine Komponente Ihrer Anwendung aktualisieren möchte. Um Daten- und Zustandsinformationen im Updatefall zu speichern, sollten Sie die WM_QUERYENDSESSION und WM_ENDSESSION Nachrichten verarbeiten. Weitere Informationen finden Sie in den einzelnen Nachrichten. Das Timeout für die Antwort auf diese Nachrichten beträgt fünf Sekunden. Der Großteil der verfügbaren Wiederherstellungszeit befindet sich in der WM_CLOSE Meldung, für die Sie 30 Sekunden Zeit haben.

Eine Konsolenanwendung, die aktualisiert werden kann, verwendet die CTRL_C_EVENT-Benachrichtigung, um die Wiederherstellung zu initiieren (weitere Informationen finden Sie unter HandlerRoutine-Rückruffunktion ). Das Timeout für den Handler beträgt 30 Sekunden.

Anwendungen sollten erwägen, Daten und Zustandsinformationen regelmäßig zu speichern, um die für die Wiederherstellung benötigte Zeit zu verkürzen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winbase.h (Windows.h einschließen)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

ApplicationRecoveryCallback

ApplicationRecoveryInProgress

RegisterApplicationRestart

UnregisterApplicationRecoveryCallback