SetUnhandledExceptionFilter

【勇芳软件工作室】汉化HomePreviousNext

SetUnhandledExceptionFilter函数允许应用程序取代Win32放置在每个线程和进程顶部的顶级异常处理程序。

调用此函数后,如果在未调试的进程中发生异常,并且异常会使其返回到Win32未处理的异常过滤器,该过滤器将调用【lpTopLevelExceptionFilter】参数指定的异常过滤器函数。

LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(

LPTOP_LEVEL_EXCEPTION_FILTER 【lpTopLevelExceptionFilter】//异常过滤功能
); 

参数

【lpTopLevelExceptionFilter】

提供顶级异常过滤器功能的地址,只要UnhandledExceptionFilter 功能获得控制,该进程将被调用,并且进程未被调试。此参数的值为NULL指定UnhandledExceptionFilter内的默认处理。

过滤器函数的语法与UnhandledExceptionFilter的语法相同:它采用类型为LPEXCEPTION_POINTERS的单个参数,并返回值为LONG的值。过滤器函数应该返回以下值之一:

含义
EXCEPTION_EXECUTE_HANDLERUnhandledExceptionFilter返回并执行关联的异常处理程序。这通常导致过程终止。
EXCEPTION_CONTINUE_EXECUTIONUnhandledExceptionFilter返回,并从异常点继续执行。请注意,过滤器功能可以通过修改通过其LPEXCEPTION_POINTERS参数提供的异常信息来自由修改连续状态。
EXCEPTION_CONTINUE_SEARCH继续正常执行UnhandledExceptionFilter.这意味着遵守SetErrorMod标志,或调用“应用程序错误”弹出消息框。

返回值

SetUnhandledExceptionFilter函数返回使用该函数建立的上一个异常过滤器的地址。NULL返回值意味着没有当前的顶级异常处理程序。

备注

发出SetUnhandledExceptionFilter将替换调用进程中所有现有和所有未来线程的顶层异常过滤器。

【lpTopLevelExceptionFilter】指定的异常处理程序在导致故障的线程的上下文中执行。这可能会影响异常处理程序从某些异常中恢复的能力,例如无效堆栈。

也可以看看

UnhandledExceptionFilter