获取文件指针的位置

Get location of a file pointer

本文关键字:位置 指针 文件 获取      更新时间:2023-10-16

在Windows中,是否无法获取文件指针的当前位置?

例如,如果我使用SetFilePointer,并且我想确定文件指针在查找后的文件中的位置?

您可以使用:

high_dword = 0;
low_dword = SetFilePointer(file, 0, &high_dword, FILE_CURRENT);
pos = high_dword << 32 | low_dword

该函数的返回值告诉您新的位置。引用文件:

如果函数成功并且lpDistanceToMoveHigh为NULL,则返回值是新文件指针的低阶DWORD。

注意如果函数返回的值不是INVALID_SET_FILE_POINTER,对SetFilePointer的调用已成功。您不需要调用GetLastError。

如果函数成功并且lpDistanceToMoveHigh不为NULL,则返回值是新文件指针的低位DWORD,并且lpDistanceToMoveHigh包含新文件的高阶DWORD指针。

如果您想在不移动的情况下发现当前位置,则通过FILE_CURRENT的"移动方法"和零距离。

该文档还包含一个示例,说明如何将该函数包装成一个不需要将位置的上下部分拆分为单独变量的函数。

SetFilePointer返回新的文件指针,但仅适用于文件偏移量<4GB。如果要处理较大的文件,请使用SetFilePointerEx

如果只想检索当前位置,请使用偏移量为零的FILE_current。