获取文件指针的位置
Get location of a file pointer
在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。
相关文章:
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- C++指针数组到字符数组中的特定位置
- 声明指针时更改星号的位置
- 如何在单个链表中交换两个节点的位置,只修改指针
- 当原始数据是常量时,修改指针指向的位置是 UB 吗?
- 如果访问对象,则指向的对象内部的指针会更改内存位置
- 访问违规读取位置传递指针以在c中写入的DLL中起作用
- 如何在内存位置取消指针,并用值启动它
- C++ - 智能指针 - 访问冲突读取位置0xDDDDDDDD
- 最简单的方法使多个指针一次指向同一位置,一次只处理2个位置
- 在指针中保存确定的位置
- 通过在此指针上放置新位置重新初始化对象时未定义的行为
- Visual Studio 中的"指向引用的指针"错误不会按发生位置的文件名显示
- 将指针数组传递给数组,以便在 malloc() 发生的位置发挥作用
- 为什么在递增后使用 [] 运算符访问指针数组会返回错误地址的当前内存位置
- 试图读取AIFF文件意外错误与指针位置等有关
- 使用指针在字符串中获取字符的位置
- qtextstream弄乱了其位置指针
- 我如何知道一个位置指针在二维数组的行数
- 修正:访问冲突读取位置(指针到字符串数组)