Поделиться через


Функция 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. Функция фильтра должна возвращать одно из следующих значений.

Значение Значение
EXCEPTION_EXECUTE_HANDLER
0x1
Вернитесь из UnhandledExceptionFilter и выполните связанный обработчик исключений. Обычно это приводит к завершению процесса.
EXCEPTION_CONTINUE_EXECUTION
0xffffffff
Верните из UnhandledExceptionFilter и продолжите выполнение из точки исключения. Обратите внимание, что функция фильтра может изменять состояние продолжения, изменяя сведения об исключении, предоставленные с помощью параметра LPEXCEPTION_POINTERS .
EXCEPTION_CONTINUE_SEARCH
0x0
Продолжайте нормальное выполнение UnhandledExceptionFilter. Это означает соблюдение флагов SetErrorMode или вызов всплывающего окна ошибки приложения.

Возвращаемое значение

Функция SetUnhandledExceptionFilter возвращает адрес предыдущего фильтра исключений, установленного с помощью функции . Возвращаемое значение NULL означает, что текущий обработчик исключений верхнего уровня отсутствует.

Комментарии

Выдача SetUnhandledExceptionFilter заменяет существующий фильтр исключений верхнего уровня для всех существующих и всех будущих потоков в вызывающем процессе.

Обработчик исключений, заданный lpTopLevelExceptionFilter , выполняется в контексте потока, вызвавшего ошибку. Это может повлиять на способность обработчика исключений восстанавливаться после некоторых исключений, таких как недопустимый стек.

Требования

   
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header errhandlingapi.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

Структурированные функции обработки исключений

Общие сведения о структурированной обработке исключений

UnhandledExceptionFilter

API-интерфейсы Vertdll, доступные в анклавах VBS