x64のMessageBox APIの動作の不思議

実は微妙にx64のmanifestによる意外な落とし穴の続きだったりする話です。

とりあえずメッセージボックスを表示できるようになった~と思っていろいろとくみ上げて細工をしていったのですが、

汎用エラー処理(汎用例外時にレジスタ状態などの表示)を行おうと言うことでメッセージボックスを使おうとして、

エラーを表示させてみようとしました。とりあえず意図的に

*((int *)NULL) = -1;

を追加してエラーを発生させるようにして実行。

・・・あれ?表示されない?しかもそのまま落ちてる?

というわけで、またもや表示されないという悲劇が。ちなみにプログラムが完全に起動した後のメッセージボックスはなぜか表示されます。

これこそ訳がわかりません。もちろん、単体プログラムで表示させるなら表示できますし、例外処理時にメッセージボックスが使えない、ということもありません。

(Win32と共通となるコート上では正常に動作しているので大丈夫だろうと踏んでいます。)

やっぱりよくわからないMessageBox君でした。というよりはこれもmanifestのミスのような気がしないでもないです。この辺がちょっと微妙なx64プログラム君ですかね~

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この記事のトラックバック用URL