加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Win32消息调度程序捕获异常的问题

发布时间:2020-12-16 06:55:05 所属栏目:百科 来源:网络整理
导读:这是一个非常低级的类型问题,但也许有人在这里有一些见解…… 我遇到的问题是,未处理的SEH异常(例如访问冲突)似乎在Win32消息调度级别被捕获,而不是终止程序.我找到了以下参考博客,它解释了问题,但仅在WM_TIMER消息的上下文中:http://bugswar.blogspot.com/
这是一个非常低级的类型问题,但也许有人在这里有一些见解……

我遇到的问题是,未处理的SEH异常(例如访问冲突)似乎在Win32消息调度级别被捕获,而不是终止程序.我找到了以下参考博客,它解释了问题,但仅在WM_TIMER消息的上下文中:http://bugswar.blogspot.com/2010/07/why-its-not-crashing.html

我遇到了Win 2008R2和“正常”消息(例如:WM_COMMAND等)的问题.我怀疑它可能是Windows试图通过屏蔽异常来“帮助”,但我希望它能够出错; “继续和忽略”行为通常会导致应用程序出现问题.我意识到我可以尝试将每个函数包装在try / catch中,并使用编译器选项/ EHa将SEH异常转换为C异常(这本身非常气馁和危险),但这显然是次优的.

根据引用的博客,TIB结构中的AppCompatFlags2中有一个标志(http://en.wikipedia.org/wiki/Win32_Thread_Information_Block),这可能导致Win32处理程序无法捕获/丢弃SEH异常,但我没有想法如何设置/启用它.有人对此有任何见解吗?是否有AppCompat设置我可以启用Windows无法捕获并忽略异常?

解决方法

我认为这是设计的,但显然它没有被仔细考虑.也许不明智的尝试使一些遗留应用程序“行为”.

您可以在Windows 7 SP1中覆盖此行为;我在这个in this stackoverflow answer上写了更多.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读