一位客户想要了解读文件(ReadFile)
和WriteFile
函数无法转移所有字节
的条件,及如何检测它.
读文件
函数无法转移所有字节
的明显原因是没有那么多字节要读取
.对磁盘文件
,这一般是因为你读取到了文件尾
.
还可为其他类型
的文件句柄
取此内容:对非阻塞模式
的管道,管道中可能没有足够的字节
.或,你可能有一个消息小于缓冲大小
的消息管道
.
或,你可能正在访问设备
,但该设备没有所有可用字节
.
同样,WriteFile
函数无法转移所有字节
的明显原因是没有足够的空间
保存所有字节.对磁盘文件
,磁盘可能已满,或你已达到磁盘配额
.
对非阻塞模式
的管道,如果管道
中没有足够的保存所有请求的数据
的缓冲空间
,则写入
可能会很短(不完整)
.此时,都可通过检查实际写入的字节数
是否小于请求的字节数
来检测短写入
.
如果实际转移的字节数
为非零
,则读文件
和WriteFile
函数将返回成功
,但实际转移的字节数
将小于请求的字节数
.