我正在使用windwos xp,我想将数据(每次大约4 MB)附加到文件中。
使用“WriteFileGather”,我一直都在增加重叠结构的偏移量值。
由于系统调用为32位,因此偏移值(DWORD)不能超过4GB。
代码示例:
LARGE_INTEGER size;
if (!GetFileSizeEx(_hFile, &size))
{
return;
}
overlapped.Offset = size.QuadPart;
使用ftell和fseek对我不起作用。
显然,“WriteFileGather”要求指定overlayped.offset值。
超过4G限制的方法是什么?
最佳答案
WriteFileGather
采用OVERLAPPED
结构,从中获取开始写入文件的偏移量。此偏移量分为高双字和低双字(Offset
和OffsetHigh
),因此它实际上是64位偏移量。
因此,如果您想使用WriteFileGather
(个人而言,我不会),这并不是障碍。尽管总文件长度或文件中的偏移量可能比这大得多,但一次写入的容量不能超过4GB(但是您还是不想这样做!)。