Share via


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:

(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

Windows-Fehlerberichterstattung