Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi “究竟是什么?”;“应用程序定义”;关于未处理的ExceptionFilter?_Winapi_Seh_Structured Exception - Fatal编程技术网

Winapi “究竟是什么?”;“应用程序定义”;关于未处理的ExceptionFilter?

Winapi “究竟是什么?”;“应用程序定义”;关于未处理的ExceptionFilter?,winapi,seh,structured-exception,Winapi,Seh,Structured Exception,如下所示:“一个应用程序定义的函数,如果进程正在调试,它将未处理的异常传递给调试器。” 但是这个函数显然是由操作系统提供的,在kernel32.dll中,根据相同的页面 那他们为什么称它为应用程序定义的函数呢?是的,非常笨拙的语言。它是函数的原型定义。您可以将其与_except关键字一起使用,也可以将其用作SetUnhandledExceptionFilter()的参数。这两种方法都会使您的函数成为“应用程序定义的函数” 如果两者都不做,则调试器会在未处理的异常处自动停止。我想这就是他们所说的“

如下所示:“一个应用程序定义的函数,如果进程正在调试,它将未处理的异常传递给调试器。”

但是这个函数显然是由操作系统提供的,在kernel32.dll中,根据相同的页面


那他们为什么称它为应用程序定义的函数呢?

是的,非常笨拙的语言。它是函数的原型定义。您可以将其与_except关键字一起使用,也可以将其用作SetUnhandledExceptionFilter()的参数。这两种方法都会使您的函数成为“应用程序定义的函数”


如果两者都不做,则调试器会在未处理的异常处自动停止。我想这就是他们所说的“将异常传递给调试器”的意思。SEH的SDK文档应该得到一个全面的失败分数。

UnhandledExceptionFilter()本身不是内核提供的函数(尽管内核确实实现了自己的默认实现,直到您用自己的实现覆盖它为止)。您引用的UnhandledExceptionFilter()文档描述了一个函数原型,如果您选择实现自己的函数并将其传递给SetUnhandledExceptionFilter()函数以在内核中激活它,则必须遵循该原型。

Hmm,您所说的方式似乎同样具有误导性。如果它不是自己的函数,为什么它会以
KERNEL32的形式出现在我的WinDbg stacktrace中!UnhandledExceptionFilter
?(但这是一个修辞问题,真的:我想我现在明白了。)好吧,按照我的理解,本文设法在一个地方记录了一个名为UnhandledExceptionHandler的原型,以及一个名为UnhandledExceptionHandler的函数,完全无法解释其区别。谢谢你把这件事弄清楚。