同步ReadFile读取的字节数

klu*_*udg 5 c delphi winapi readfile

假设我有 1Mb 文件,文件指针位于文件的开头。我调用同步ReadFile:

ReadFile(Handle, Buffer, 1024, Result, nil);
Run Code Online (Sandbox Code Playgroud)

调用成功,没有出现错误。结果值(读取的字节数)是否可能小于 1024(读取的字节数)?

我认为这对于磁盘文件来说是不可能的,我不确定ReadFile可以访问其他资源。在编写可以使用不同资源的通用代码时,我是否应该考虑上述情况?


为了避免哲学推测,我可以将问题重新表述如下:

同步 ReadFile 执行无错误,并且读取的字节数小于要读取的字节数。我可以确定达到 EOF 吗?

Mar*_*ema 4

在您给定的场景中,对于磁盘文件来说,似乎不可能接收到比请求的字节数更少的读取字节数。

但是,编写可以处理不同资源的通用代码时,在位置+请求的字节数小于要传输的字节总数的情况下,您不应该依赖于始终接收请求的字节数。

例如,当名为 WriteFile 的命名管道的另一端有 0 字节要写入时,Readfile 可以在成功调用时返回 0 字节读取...