为了测试这个问题,我编写了一个最小的Windows应用程序.如果我在WM_PAINT处理程序中强制执行访问冲突,则此异常永远不会到达调试器.如果在没有调试器的情况下启动,则访问冲突也不会显示.通常,您应该获得Windows错误报告对话框.
深入挖掘似乎user32.dll中的某些内容会捕获所有传入的异常.这是正常的行为吗?我可以以某种方式控制它吗?是不是将所有异常都列为安全风险?至少它很烦人.
这是在Vista 64上使用32位和64位应用程序.在XP上,异常似乎按预期处理.其他Windows消息也有同样的问题.也许他们都是?
该WM_PAINT处理程序:
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
*(int*)0 = 0;
EndPaint(hWnd, &ps);
break;
Run Code Online (Sandbox Code Playgroud)