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