【发布时间】:2010-08-31 17:09:37
【问题描述】:
MSDN describes UnhandledExceptionFilter 如下:“如果正在调试进程,则将未处理的异常传递给调试器的应用程序定义函数。”
但是这个函数显然是由操作系统提供的,在 kernel32.dll 中根据同一页。
那么为什么他们称它为应用程序定义的函数?
【问题讨论】:
标签: winapi seh structured-exception
MSDN describes UnhandledExceptionFilter 如下:“如果正在调试进程,则将未处理的异常传递给调试器的应用程序定义函数。”
但是这个函数显然是由操作系统提供的,在 kernel32.dll 中根据同一页。
那么为什么他们称它为应用程序定义的函数?
【问题讨论】:
标签: winapi seh structured-exception
是的,非常尴尬的语言。它是一个函数的原型定义。您可以使用 __except 关键字或作为 SetUnhandledExceptionFilter() 的参数。要么让你的“应用程序定义的功能”。
如果您两者都不做,则有默认处理,调试器会在未处理的异常处自动停止。我想这就是他们所说的“将异常传递给调试器”的意思。 SEH 的 SDK 文档应获得全面的不及格评分。
【讨论】:
UnhandledExceptionFilter() 本身不是内核提供的函数(尽管内核确实实现了自己的默认实现,直到您用自己的覆盖它之前一直使用它)。您引用的 UnhandledExceptionFilter() 文档描述了一个函数原型,如果您选择实现自己的函数并将其传递给 SetUnhandledExceptionFilter() 函数以在内核中激活它,则必须遵循该原型。
【讨论】:
KERNEL32!UnhandledExceptionFilter?