2012-02-07 159 views
2

我使用的VC++函數ReadFile的()中包含 「lpNumberOfBytesRead」 設置爲0

ReadFile(FileHandle,charBuf,noOfBytesToRead,&noOfBytesRead,NULL); 

內部的for循環返回1;在文件循環的每次迭代中,FileHandle在文件中向前移動,即在每次迭代中,我們正在讀取文件的特定單元,並將文件中的數據單元(文件中的數據串)複製到char *數組中。

在每次迭代中要讀取的數據量(從文件到char *數組)由「noOfBytesToRead」確定。

對於一些沒有:迭代的ReadFile的()工作正常,但我觀察到了一些「N」次迭代(當讀取數據的第n串)的第四個參數(noOfBytesRead)在上述通話設置即使ReadFile()返回0也爲0.

ReadFile()的返回值爲1表示成功&第4個參數「noOfBytesRead」設置爲0,而不是no:of bytes Read。這是矛盾的!這是爲什麼?

任何人都可以在此幫助我。 ReadFile()是一個Win API我甚至不能進入代碼進一步調試。

回答

4

MSDN

如果返回值是非零和字節數讀爲零時,文件指針超出在所述讀取操作的時刻的文件的當前端。

+0

非常感謝。 – codeLover 2012-02-07 10:09:53

2

MSDN manual page

當同步讀取操作到達文件的結尾,ReadFile的返回TRUE和套* lpNumberOfBytesRead爲零。

+0

非常感謝。 – codeLover 2012-02-07 10:10:31