如何设置以FILE_FLAG_OVERLAPPED打开的文件的大小?
重叠IO模式下SetEndOfFile与文件指针的行为疑问
- 有资料提到:
调用
SetEndOfFile前必须先调用SetFilePointer - 但
SetFilePointer的官方文档明确说明:由hFile参数标识的文件指针不用于重叠读写操作。
实际测试步骤与结果
以FILE_FLAG_OVERLAPPED标记打开文件后,执行了如下操作:
- 调用
SetFilePointer将文件指针移至4MB位置,随后调用SetEndOfFile截断文件 - 再次调用
SetFilePointer,从FILE_BEGIN处偏移0字节重置指针 - 配置
OVERLAPPED结构体的Offset和OffsetHigh字段为0xFFFFFFFF,执行写入操作 - 最终结果:写入操作并未从文件起始位置开始,而是发生在文件末尾(即4MB位置)
内容的提问来源于stack exchange,提问作者Agnel Kurian
相关产品推荐
相关产品推荐

