Получить расположение указателя файла - PullRequest
3 голосов
/ 20 января 2012

В Windows нет способа узнать текущее местоположение указателя файла?

Например, если я использую SetFilePointer, и я хочу определить местонахождение файла, указатель файла завелся после поиска?

Ответы [ 3 ]

8 голосов
/ 20 января 2012

Возвращаемое значение этой функции сообщает вам новую позицию.Цитирование документации :

Если функция завершается успешно и lpDistanceToMoveHigh равен NULL, возвращаемое значение - младший DWORD указателя нового файла.

Примечание Если функция возвращает значение, отличное от INVALID_SET_FILE_POINTER, вызов SetFilePointer завершился успешно.Вам не нужно вызывать GetLastError.

Если функция завершается успешно, а lpDistanceToMoveHigh не равен NULL, возвращаемое значение - это младший DWORD указателя нового файла, а lpDistanceToMoveHigh содержит старшее DWORD указателя нового файла.

Если вы хотите обнаружить текущее местоположение без его перемещения, то передайте «метод перемещения», равный FILE_CURRENT и расстоянию, равному нулю.

Документация также содержит пример того, как обернуть эту функцию в функцию, не требующую разделения верхней и нижней частей позиции на отдельные переменные.

7 голосов
/ 20 января 2012

Вы можете использовать:

high_dword = 0;

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

pos = high_dword << 32 | low_dword
2 голосов
/ 20 января 2012

SetFilePointer возвращает указатель нового файла, но работает только для смещений файла <4 ГБ. Если вы хотите обрабатывать файлы большего размера, используйте <code>SetFilePointerEx.

Если вы просто хотите получить текущую позицию, используйте FILE_CURRENT со смещением нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...