LoadImageを使用してのbitmap表示不具合?について – 固定ページ 2 – プログラミング – Home

LoadImageを使用してのbitm...
 
通知
すべてクリア

[解決済] LoadImageを使用してのbitmap表示不具合?について

固定ページ 2 / 2

HAK
 HAK
(@HAK)
ゲスト
結合: 15年前
投稿: 10
Topic starter  

2009/10/19(月) 08:49:25の文章は間違えて書き込み途中に送信してしまいました。
申し訳ありません。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

もしかしたら本当にバグかもしれません。
ググったらこんなページを見つけました。
http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.gdi/2007-01/msg00033.html

第二引数のファイル名のポインタ値の下位16ビットが
たまたま winuser.h に定義されている OBM_* の値に一致するときに現象が発生します。
回避するには第一引数にインスタンスハンドルを渡せばいいようです。


返信引用
HAK
 HAK
(@HAK)
ゲスト
結合: 15年前
投稿: 10
Topic starter  

subaruさんご紹介ありがとうございます。
紹介頂いたサイトを参考に不具合時のLoadImage内部を混合モードで
追っかけてみました。
おそらくですが関数引き渡し時にスタックに書き込まれたfnのアドレスが
LoadImage処理中に別のアドレスに書き換わっていました。
(正常時には書き換わっていませんでしたのでおそらく間違いないと思われます)
結果として指定したファイルと異なるデータが帰ってきたようです。

とりあえずの対策として
1.fnをstaticとしスタックを使用しない
2.第一引数にインスタンスハンドルを渡す
この2点で様子を見ることとしました。

混合モードで見ていたため実際は他スレッドの処理だったのかもしれませんが
確認方法が解らず不明です。


返信引用
HAK
 HAK
(@HAK)
ゲスト
結合: 15年前
投稿: 10
Topic starter  

時間が立ってしまいましたが結果を書き込みます。

対策として
1.fnをstaticとしスタックを使用しない
2.第一引数にインスタンスハンドルを渡す
を行いましたが
1.のみでは現象が再発、1週間ぐらいで再度発生しました。

2.を追加で実施した所、1ヶ月連続動作させましたが発生しませんでした。
はっきりとした原因はわかっていませんので、これで100%解決したとは
言えませんが一応結果として報告し、解決とします。

みなさまありがとうございました。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました