我正在使用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结构,从中获取开始写入文件的偏移量。此偏移量分为高双字和低双字(OffsetOffsetHigh),因此它实际上是64位偏移量。

因此,如果您想使用WriteFileGather(个人而言,我不会),这并不是障碍。尽管总文件长度或文件中的偏移量可能比这大得多,但一次写入的容量不能超过4GB(但是您还是不想这样做!)。

10-04 17:03