サードパーティのライブラリを使用して 1 つの単純なタスク (ラスタライズ) を実行する小さなユーティリティ (VC 2010、clr なし) を作成しています。後のユーティリティは、より大きなアプリケーションで使用されます。サード パーティ製ライブラリのヒープ破損が原因で、ユーティリティがクラッシュすることがあります。それは問題ありませんが、Windows (Vista/2008) では、「プログラムが動作を停止しました... プログラムを閉じる/デバッグする」というよく知られたダイアログが表示されます。私の場合(サーバー側)には適切ではありません。ユーティリティは、目に見える影響を与えることなく、静かにクラッシュ/終了する必要があります。
そのために、未処理の例外 (SetUnhandledExceptionFilter) 用に SEH をインストールしました。ハンドラーは、AV ( *(PDWORD)0 = 0 ) のような例外に対して完全に呼び出されますが、何らかの理由で、ヒープ破損の場合には呼び出されません。アンロード中に、サード パーティ製ライブラリ dll の 1 つの dllmain で破損が発生します。
いくつか質問があります。ハンドラーが呼び出されない理由を誰か説明できますか? そのダイアログを防ぐ別の方法はありますか?