この問題をテストするために、最小限の 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;