この問題をテストするために、私は最小限のWindowsアプリケーションを作成しました。私がWM_PAINT
ハンドラでアクセス違反を強制すると、この例外はデバッガに決して送られません。デバッガなしで起動すると、アクセス違反も表示されません。通常、Windowsエラー報告ダイアログが表示されます。WM_PAINTのアクセス違反がキャッチされていません
少し深く調べると、user32.dllの何かがすべての受信例外をキャッチしているようです。これは正常な動作ですか?何とかこれを制御できますか?すべての例外にセキュリティリスクがかかりませんか?少なくともそれは地獄のように迷惑です。
これはVista 64で32ビットと64ビットのアプリケーションを使用しているため、XPでは例外が予期したとおりに処理されているようです。他のウィンドウメッセージにも同じ問題があります。多分それらのすべて?
WM_PAINT
ハンドラ:
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
*(int*)0 = 0;
EndPaint(hWnd, &ps);
break;
私は知っていますが、これはデバッガを使用している場合の唯一の解決策です。そして、Windowsのメッセージを処理している間にスローされるかもしれない他のすべての例外とは何ですか?この変更のための公式(または非公式)文書または推論がありますか? –