ReadFile が正常に読んでくれない

[戻る]
シャノン [E-Mail] [HomePage] 2003/02/23(日) 02:04:58
はじめまして。
SDKの質問でもいいでしょうか…?


ReadFile API で、あるファイルを読み込もうとしています。
が、ちゃんと読んでくれません。
どういうことかと言いますと…

読み込みたいファイルをバイナリエディタで見た場合、データは
EC BB E5 57 1C C1 16 B7 DB C0 00 83 3B C1 33 C0
と並んでいました(一部抜粋)。

が、ReadFile で BYTE 配列に読み込んでみると、
00 BB 00 57 1C C1 16 B7 DB C0 00 00 3B C1 33 C0
となっているようです(一部 00 になってしまっている)。

このせいで、それ以降の処理がうまくいかずに困っています。
なお、他のファイルも試してみましたが、同じような症状が出ます。

原因に心当たりがある方がいらっしゃいましたら、教えていただけないでしょうか?


関連しそうな部分のコードも載せておきます。

#define INBUFSIZE        20480

HANDLE hInFile = CreateFile( lpszInputFile, GENERIC_READ, FILE_SHARE_READ, 
NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL );

BYTE inBuf[INBUFSIZE] = { 0 };

ReadFile( hInFile, inBuf, INBUFSIZE, &dwRead, NULL );


環境は、WinXP SP1、VC++.NET です。

YuO [E-Mail] 2003/02/23(日) 04:13:45
値がそのようになっていることを,どのようにして確認しましたか?

VC++.Netのデバッガには,正しい値を表示しないという,
バグとしか思えない仕様がありますが……。

シャノン [E-Mail] [HomePage] 2003/02/23(日) 05:04:15
[[解決]]
YuOさん、レスありがとうございます。

> 値がそのようになっていることを,どのようにして確認しましたか?
ReadFile の直後まで実行して、自動変数ってウィンドウに表示されたものを書きまし
た。

> VC++.Netのデバッガには,正しい値を表示しないという,
> バグとしか思えない仕様がありますが……。
え゛っ、そんなんあったんですか…

で、別のメモリエディタで変数の中をのぞいてみたところ、どうやら ReadFile はちゃ
んと読んでくれているようでした。

しかしそうすると、その後の処理が失敗するのには別の原因があるのか…

古いスレッドには追加発言できません。