やすみやすみみのチラシの裏

<< September 2009 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >>

画面切り替えで例外

2009.09.22 Tuesday | 雑記

ある日、ふとフルスクリーンとウインドウを切り替える時に例外が発生しているらしいのに気づいた。

> sample.exe の 0x7779fbae で初回の例外が発生しました: 0x00000000: この操作を正しく終了しました。
発生箇所はIDirect3DDevice9::Resetを呼んだ時のようだ。

> http://ir9.jp/prog/ayu/win32err.htm#com
NOERRORだから気にしなくてもいいのかもしれないけど、例外発生って毎回言われてるとなんか嫌な感じ。

書籍付録CDやらネットから何個か切り替えサンプルコードを試してみるが、
ことごとくこの例外が発生している。

これは環境によるところなのだろうか。

・DirectXSDKをとっかえひっかえ→変わらず。
・グラフィックドライバを最新に更新→変わらず。


ならばとデバッガの例外を詳しく調べようとしたら、フルスクリーンのまま止まってえらいことに。

タスクマネージャやらALT+TABやらでなんとか復帰させようとしたら壁紙の設定が飛ぶ。


ここで奇跡が起こる。


突如切り替えても例外が発生しなくなった!!
え、壁紙が原因? なにそれこわい

・壁紙を元画像に戻す→例外発生
・壁紙をWindowsデフォルトの画像から選択→発生せず
・例外発生する画像を壁紙をパブリックピクチャに移動→例外発生


そこでデフォルトの壁紙ファイルはどれもjpgなのに気づく。
エラー出てるマイ画像はbmpだ

・bmp画像をjpgにして設定してみる→発生せず
・Windowsデフォルト画像をbmpにして設定→例外発生


アッーーー!

つまり、内部はよくわからないから解釈は間違ってると思うけど
Vistaでbmpを壁紙にしてたら画面切り替え時のVRAMの壁紙部分が例外メッセージなげていて、
IDirect3DDevice9::Resetがそれを拾ってデバッガに出力されていたとかそんな感じ?


そんなんしるかー!


画像ファイル右クリックメニューで
jpgだと「ディスクトップの背景として設定」があるけど
bmpだと無い。
きっとVistaだとbmpの壁紙設定は互換で残してるけど
推奨はしてないんだろうと理解しておく事にした。
author : ヤスウェア | - | -