WerRegisterRuntimeExceptionModule-Funktion (werapi.h)
Registriert einen benutzerdefinierten Runtime-Ausnahmehandler, der verwendet wird, um benutzerdefinierte Windows-Fehlerberichterstattung (WER) für Abstürze bereitzustellen.
Syntax
HRESULT WerRegisterRuntimeExceptionModule(
[in] PCWSTR pwszOutOfProcessCallbackDll,
[in, optional] PVOID pContext
);
Parameter
[in] pwszOutOfProcessCallbackDll
Der Name der zu registrierenden Ausnahmehandler-DLL.
[in, optional] pContext
Ein Zeiger auf beliebige Kontextinformationen, die an die Rückruffunktionen des Handlers übergeben werden.
Rückgabewert
Diese Funktion gibt S_OK bei Erfolg oder einen Fehlercode bei Fehler zurück, einschließlich der folgenden Fehlercodes.
Rückgabecode | Beschreibung |
---|---|
WER_E_INVALID_STATE | Der Prozessstatus ist ungültig. Der Prozess befindet sich beispielsweise im Anwendungswiederherstellungsmodus. |
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) | Die Anzahl der registrierten Runtime-Ausnahmemodule überschreitet den Grenzwert. Ein Prozess kann bis zu WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES Handler registrieren. |
Hinweise
Der Ausnahmehandler ist eine Out-of-Process-DLL, die der WER-Dienst lädt, wenn ein Absturz oder eine nicht behandelte Ausnahme auftritt. Die DLL muss die folgenden Funktionen implementieren und exportieren:
- OutOfProcessExceptionEventCallback
- OutOfProcessExceptionEventSignatureCallback
- OutOfProcessExceptionEventDebuggerLaunchCallback
(Die DLL muss auch den DllMain-Einstiegspunkt enthalten.)
Die Verwendung eines Ausnahmehandlers ist sicherer und zuverlässiger für die Meldung von Absturzinformationen als das aktuelle Feature für die Ereignisberichterstattung in Prozessen. Außerdem eignet sich die aktuelle generische Ereignisberichterstattungsfunktion nur für die Meldung nicht schwerwiegender Fehler.
Für diese Funktion muss die pwszOutOfProcessCallbackDll-DLL in die Liste des WER-Ausnahmehandlermoduls in der Registrierung aufgenommen werden. Wenn der Prozess nach der Registrierung eines Ausnahmehandlers abstürzt oder eine nicht behandelte Ausnahme auslöst, lädt der WER-Dienst Ihren Ausnahmehandler und ruft die Rückruffunktion OutOfProcessExceptionEventCallback auf, die Sie verwenden, um Ihren Anspruch für den Absturz anzugeben und den Ereignisnamen und die Anzahl der Berichtsparameter anzugeben. Beachten Sie, dass, wenn der Prozess mehrere Ausnahmehandler registriert, der Dienst jeden Handler aufruft, bis einer der Handler den Absturz angibt. Wenn keine Handler den Absturz für sich beanspruchen, verwendet WER standardmäßig native Absturzberichte.
Wenn ein Ausnahmehandler die Ausnahme beansprucht, ruft der WER-Dienst die Rückruffunktion OutOfProcessExceptionEventSignatureCallback auf, die die Berichtsparameter bereitstellt, die das Problem eindeutig definieren. Anschließend ruft der WER-Dienst den Rückruf OutOfProcessExceptionEventDebuggerLaunchCallback auf, um zu bestimmen, ob dem Benutzer die Möglichkeit geboten werden soll, einen Debugger zu starten oder den Debugger automatisch zu starten. Der Handler kann auch eine benutzerdefinierte Debuggerstartzeichenfolge angeben, die die Standardzeichenfolge überschreibt (der Standardwert ist der Debugger, der im Registrierungsschlüssel AeDebug angegeben ist).
Nachdem der Handler den Ereignisnamen, Berichtsparameter und Debuggerstarteinstellungen angegeben hat, wird der rest des Fehlerberichtsflusses wie gewohnt fortgesetzt.
Sie müssen die Funktion WerUnregisterRuntimeExceptionModule aufrufen, um die Registrierung zu entfernen, bevor Der Prozess beendet wird. Ein Prozess kann bis zu WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES Handler registrieren.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | werapi.h |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für