• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ReadFileの読み込みエラーについて)

ReadFileの読み込みエラーについて

このQ&Aのポイント
  • Win32 APIでプログラミングを行っている際に発生する、ReadFile関数の読み込みエラーについて質問です。
  • ReadFile関数を使用してファイルを読み込む際に、エラー値が正しく取得されず、BITMAPINFO構造体に格納される値がそのままになってしまいます。
  • bmi2変数がBITMAPINFO構造体でローカルに宣言されているため、ポインタではない変数が使用されていることが原因かもしれません。なぜ変数ではなくポインタを使用する必要があるのかについてご教示いただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>er = GetLastError(); // ここの部分でエラー値998が出ます 「メモリ ロケーションへのアクセスが無効です。」だそうです。 errlook.exeで確認できますが。 >bmi2はBITMAPINFO構造体でローカルで宣言しています。これがポインタだと大丈夫なんですが ええと……BITMAPINFO構造体にはRGBQUADが配列で「1個」分しかありません。 ということは、1ピクセルのデータしか突っ込めません。 # モノクロビットマップなら…32ピクセル分ですかねぇ…。 # 8ビットなら4ピクセル…は無理か。たぶんパレット情報で終わり。 そこに2ピクセル以上のものを読み込もうとしたらどうなるかは判りますよね? 「ポインタだったら読めた」のは、ぶっ壊しながら読み込んだに過ぎないのではありませんか? # バッファオーバーフローです。 ローカル変数はぶっ壊した場合にスタックともども壊していきますしねぇ。 読み込み処理なら… http://www.kumei.ne.jp/c_lang/sdk2/sdk_169.htm とか参考になりますかねぇ。

DEADSPACE566
質問者

お礼

  回答ありがとうございます BITMAPINFO構造体のメンバ変数bmiColorsにビットマップ情報を加えていくから たしかにローカルで宣言しただけじゃダメですね。 メモリが足りないので領域を破壊していくのは当然だし

関連するQ&A