Функция SetUnhandledExceptionFilter (errhandlingapi.h)
Позволяет приложению заменять обработчик исключений верхнего уровня для каждого потока процесса.
После вызова этой функции, если исключение возникает в процессе, который не выполняет отладку, и оно перейдет в необработанное фильтр исключений, этот фильтр вызовет функцию фильтра исключений, заданную параметром lpTopLevelExceptionFilter .
Синтаксис
LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(
[in] LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter
);
Параметры
[in] lpTopLevelExceptionFilter
Указатель на функцию фильтра исключений верхнего уровня, которая будет вызываться всякий раз, когда функция UnhandledExceptionFilter получает управление и процесс не выполняет отладку. Значение NULL для этого параметра указывает обработку по умолчанию в UnhandledExceptionFilter.
Функция фильтра имеет синтаксис, аналогичный синтаксису UnhandledExceptionFilter: она принимает один параметр типа LPEXCEPTION_POINTERS, имеет соглашение о вызовах WINAPI и возвращает значение типа LONG. Функция фильтра должна возвращать одно из следующих значений.
Значение | Значение |
---|---|
|
Вернитесь из UnhandledExceptionFilter и выполните связанный обработчик исключений. Обычно это приводит к завершению процесса. |
|
Верните из UnhandledExceptionFilter и продолжите выполнение из точки исключения. Обратите внимание, что функция фильтра может изменять состояние продолжения, изменяя сведения об исключении, предоставленные с помощью параметра LPEXCEPTION_POINTERS . |
|
Продолжайте нормальное выполнение UnhandledExceptionFilter. Это означает соблюдение флагов SetErrorMode или вызов всплывающего окна ошибки приложения. |
Возвращаемое значение
Функция SetUnhandledExceptionFilter возвращает адрес предыдущего фильтра исключений, установленного с помощью функции . Возвращаемое значение NULL означает, что текущий обработчик исключений верхнего уровня отсутствует.
Комментарии
Выдача SetUnhandledExceptionFilter заменяет существующий фильтр исключений верхнего уровня для всех существующих и всех будущих потоков в вызывающем процессе.
Обработчик исключений, заданный lpTopLevelExceptionFilter , выполняется в контексте потока, вызвавшего ошибку. Это может повлиять на способность обработчика исключений восстанавливаться после некоторых исключений, таких как недопустимый стек.
Требования
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | errhandlingapi.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |
См. также
Структурированные функции обработки исключений