获取文件指针的位置

Rob*_*ahy 3 c c++ winapi file

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

例如,如果我使用SetFilePointer,并且我想确定文件中的位置,文件指针在搜索后被清除?

Rob*_*edy 8

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

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

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

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

如果要在移动的情况下发现当前位置,则传递FILE_CURRENT一个距离为零的"移动方法" .

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


tle*_*nes 7

您可以使用:

high_dword = 0;

low_dword = SetFilePointer(file, 0, &high_dword, FILE_CURRENT);

pos = high_dword << 32 | low_dword
Run Code Online (Sandbox Code Playgroud)