ReadFile()返回1,“lpNumberOfBytesRead”设置为0

时间:2012-02-07 08:46:25

标签: c++ winapi visual-c++ readfile

我正在使用VC ++函数

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

在for循环中;在foor循环的每次迭代中,FileHandle在文件中向前移动,即在每次迭代中,我们正在读取文件的特定单元,并将文件中的数据单元(文件中的数据束)复制到char *数组。

每次迭代中要读取的数据量(从文件到char *数组)由“noOfBytesToRead”确定。

对于某些no:迭代,ReadFile()工作正常,但我观察到,对于某些“n”次迭代(在读取nTH数据束时)第4个参数( noOfBytesRead )即使ReadFile()返回1,上面的调用也设置为0。

ReadFile()的返回值为1,表示成功&第4个参数“noOfBytesRead”设置为0,而不是no:of bytes Read。这是矛盾的!为什么会这样?

任何人都可以帮助我。 ReadFile()是一个Win API我甚至无法进入代码进一步调试。

2 个答案:

答案 0 :(得分:4)

来自MSDN

  

如果返回值非零并且读取的字节数为零,则在读取操作时文件指针超出了文件的当前末尾。

答案 1 :(得分:2)

来自MSDN manual page

  

当同步读取操作到达文件末尾时,ReadFile返回TRUE并将* lpNumberOfBytesRead设置为零。