SetUnhandledExceptionFilter-Funktion (errhandlingapi.h)
Ermöglicht es einer Anwendung, den Ausnahmehandler der obersten Ebene jedes Threads eines Prozesses abzulösen.
Wenn nach dem Aufrufen dieser Funktion eine Ausnahme in einem Prozess auftritt, der nicht gedebuggt wird, und die Ausnahme sie zum nicht behandelten Ausnahmefilter macht, ruft dieser Filter die Ausnahmefilterfunktion auf, die durch den lpTopLevelExceptionFilter-Parameter angegeben wird.
Syntax
LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(
[in] LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter
);
Parameter
[in] lpTopLevelExceptionFilter
Ein Zeiger auf eine Ausnahmefilterfunktion der obersten Ebene, die immer dann aufgerufen wird, wenn die UnhandledExceptionFilter-Funktion die Kontrolle erhält und der Prozess nicht debuggt wird. Der Wert NULL für diesen Parameter gibt die Standardbehandlung in UnhandledExceptionFilter an.
Die Filterfunktion weist eine Syntax auf, die der von UnhandledExceptionFilter ähnelt: Sie akzeptiert einen einzelnen Parameter vom Typ LPEXCEPTION_POINTERS, weist eine WINAPI-Aufrufkonvention auf und gibt einen Wert vom Typ LONG zurück. Die Filterfunktion sollte einen der folgenden Werte zurückgeben.
Wert | Bedeutung |
---|---|
|
Kehren Sie von UnhandledExceptionFilter zurück, und führen Sie den zugeordneten Ausnahmehandler aus. Dies führt in der Regel zum Beenden des Prozesses. |
|
Geben Sie von UnhandledExceptionFilter zurück, und setzen Sie die Ausführung ab dem Punkt der Ausnahme fort. Beachten Sie, dass die Filterfunktion den Fortsetzungszustand ändern kann, indem sie die Ausnahmeinformationen ändert, die über den parameter LPEXCEPTION_POINTERS bereitgestellt werden. |
|
Fahren Sie mit der normalen Ausführung von UnhandledExceptionFilter fort. Dies bedeutet, dass Sie den SetErrorMode-Flags folgen oder das Popupmeldungsfeld Anwendungsfehler aufrufen. |
Rückgabewert
Die SetUnhandledExceptionFilter-Funktion gibt die Adresse des vorherigen Ausnahmefilters zurück, der mit der Funktion eingerichtet wurde. Ein NULL-Rückgabewert bedeutet, dass es keinen aktuellen Ausnahmehandler der obersten Ebene gibt.
Hinweise
Das Ausgeben von SetUnhandledExceptionFilter ersetzt den vorhandenen Ausnahmefilter der obersten Ebene für alle vorhandenen und zukünftigen Threads im aufrufenden Prozess.
Der von lpTopLevelExceptionFilter angegebene Ausnahmehandler wird im Kontext des Threads ausgeführt, der den Fehler verursacht hat. Dies kann sich auf die Fähigkeit des Ausnahmehandlers auswirken, nach bestimmten Ausnahmen wie einem ungültigen Stapel wiederherzustellen.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | errhandlingapi.h (Windows.h einschließen) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |
Siehe auch
Funktionen der strukturierten Ausnahmebehandlung