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



我正在使用VC++函数

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

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

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

对于某些no:of迭代,ReadFile()运行良好,但我观察到,对于第"n"次迭代(在读取nTH组数据时),即使ReadFile(()返回1,上述调用中的第4个参数(noOfBytesRead)也设置为0。

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

有人能帮我吗。ReadFile()是一个Win API,我甚至无法进入代码进行进一步调试。

来自MSDN:

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

来自MSDN手册页面:

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

最新更新