【发布时间】:2010-12-02 01:22:33
【问题描述】:
为了测试这个问题,我编写了一个最小的 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;
【问题讨论】:
标签: c++ windows exception winapi access-violation