为了测试这个问题,我编写了一个最小的 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;