はじめまして。
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 です。
値がそのようになっていることを,どのようにして確認しましたか?
VC++.Netのデバッガには,正しい値を表示しないという,
バグとしか思えない仕様がありますが……。
YuOさん、レスありがとうございます。
> 値がそのようになっていることを,どのようにして確認しましたか?
ReadFile の直後まで実行して、自動変数ってウィンドウに表示されたものを書きまし
た。
> VC++.Netのデバッガには,正しい値を表示しないという,
> バグとしか思えない仕様がありますが……。
え゛っ、そんなんあったんですか…
で、別のメモリエディタで変数の中をのぞいてみたところ、どうやら ReadFile はちゃ
んと読んでくれているようでした。
しかしそうすると、その後の処理が失敗するのには別の原因があるのか…