【问题标题】:Get location of a file pointer获取文件指针的位置
【发布时间】:2012-02-15 06:11:55
【问题描述】:

在 Windows 中,有没有办法获取文件指针的当前位置?

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

【问题讨论】:

    标签: c++ c file winapi


    【解决方案1】:

    你可以使用:

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

    【讨论】:

      【解决方案2】:

      SetFilePointer 返回新文件指针,但仅适用于文件偏移量 SetFilePointerEx。

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

      【讨论】:

        【解决方案3】:

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

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

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

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

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

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

        【讨论】:

        • ...我阅读了 5 次关于该文档的文档,但甚至没有看到。谢谢您,先生,我要去喝杯咖啡...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-15
        • 1970-01-01
        • 2017-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多