jjzjj

WriteFileGather

全部标签

c++ - WriteFileGather - 将缓冲区附加到文件

使用WindowsAPI的WriteFileGather,我正在将文件写入磁盘。我想将新缓冲区附加到现有文件。有什么方法可以防止WriteFileGather覆盖已有文件? 最佳答案 WriteFileGather永远不会覆盖文件,除非您要求它-没有隐含的覆盖/追加选项,只有“请在文件位置X选项写入数据”。您应该正常打开文件句柄(确保您有GENERIC_WRITE访问权限并至少指定标志FILE_FLAG_OVERLAPPED和FILE_FLAG_NO_BUFFERING使用CreateFile然后使用作为第5个参数传入的OVERLA

c++ - WriteFileGather - 写入大文件(大于 4 GB)的方法是什么?

我正在使用windwosxp,我想将数据(每次大约4MB)附加到一个文件中。使用“WriteFileGather”,我一直增加重叠结构的偏移值。由于系统调用是32位的,偏移值(DWORD)不能超过4GB值。代码示例:LARGE_INTEGERsize;if(!GetFileSizeEx(_hFile,&size)){return;}overlapped.Offset=size.QuadPart;使用ftell和fseek对我不起作用。显然,“WriteFileGather”需要分配overlapped.offset值。突破4G限制的方法是什么? 最佳答案