Поделиться через


Функция InternetSetFilePointer (wininet.h)

Задает положение файла для Файла InternetReadFile. Это синхронный вызов; Однако последующие вызовы InternetReadFile могут блокировать или возвращать ожидающие, если данные недоступны из кэша и сервер не поддерживает случайный доступ.

Синтаксис

DWORD InternetSetFilePointer(
  [in]      HINTERNET hFile,
  [in]      LONG      lDistanceToMove,
  [in, out] PLONG     lpDistanceToMoveHigh,
  [in]      DWORD     dwMoveMethod,
  [in]      DWORD_PTR dwContext
);

Параметры

[in] hFile

Дескриптор, возвращенный из предыдущего вызова InternetOpenUrl (по URL-адресу HTTP или HTTPS) или HttpOpenRequest (с помощью команды GET или HEAD HTTP и переданной в HttpSendRequest или HttpSendRequestEx). Этот дескриптор не должен быть создан с заданным значением INTERNET_FLAG_DONT_CACHE или INTERNET_FLAG_NO_CACHE_WRITE .

[in] lDistanceToMove

32-разрядное число байтов со знаком в низком порядке для перемещения указателя на файл. Internet Обозреватель 7 и более ранних версий: InternetSetFilePointer используется для перемещения указателя только в пределах long. При вызове этой более старой версии функции lpDistanceToMoveHigh зарезервирована и должна иметь значение 0. Положительное значение перемещает указатель вперед в файле; отрицательное значение перемещает его назад.

[in, out] lpDistanceToMoveHigh

Указатель на 32-разрядные 32-разрядные значения 64-разрядного расстояния со знаком для перемещения. Если 32-разрядные значения высокого порядка не требуются, для этого указателя необходимо задать значение NULL. Если значение не равно NULL, этот параметр также получает DWORD высокого порядка нового значения указателя на файл. Положительное значение перемещает указатель вперед в файле; отрицательное значение перемещает его назад. Internet Обозреватель 7 и более ранних версий: InternetSetFilePointer используется для перемещения указателя только в пределах long. При вызове этой более старой версии функции lpDistanceToMoveHigh зарезервирована и должна иметь значение 0.

[in] dwMoveMethod

Начальная точка перемещения указателя файла. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
FILE_BEGIN
Начальная точка равна нулю или началу файла. Если указан FILE_BEGIN, lDistanceToMove интерпретируется как расположение без знака для нового указателя на файл.
FILE_CURRENT
Текущее значение указателя файла является отправной точкой.
FILE_END
Текущая позиция окончания файла является отправной точкой. Этот метод завершается ошибкой, если длина содержимого неизвестна.

[in] dwContext

Этот параметр зарезервирован и должен иметь значение 0.

Возвращаемое значение

Функция выполняется успешно, она возвращает текущую позицию файла. Возвращаемое значение INVALID_SET_FILE_POINTER указывает на потенциальный сбой, за которым должен следовать вызов GetLastError.

Так как INVALID_SET_FILE_POINTER является допустимым значением для DWORD нижнего порядка нового указателя файла, вызывающий объект должен проверка возвращаемое значение функции и код ошибки, возвращаемый GetLastError, чтобы определить, произошла ли ошибка. Если произошла ошибка, значение InternetSetFilePointer INVALID_SET_FILE_POINTER, а GetLastError возвращает значение, отличное от NO_ERROR.

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

Обратите внимание, что если функция возвращает значение, отличное от INVALID_SET_FILE_POINTER, вызов InternetSetFilePointer выполнен успешно и нет необходимости вызывать GetLastError.

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

Если новый указатель на файл имеет отрицательное значение, функция завершается сбоем, указатель на файл не перемещается, а код, возвращенный GetLastError, ERROR_NEGATIVE_SEEK.

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

Комментарии

Эту функцию нельзя использовать после достижения конца файла с помощью InternetReadFile.

Для дескрипторов HINTERNET, созданных HttpOpenRequest и отправленных HttpSendRequestEx, перед использованием InternetSetFilePointer необходимо выполнить вызов HttpEndRequest.

InternetSetFilePointer нельзя использовать надежно, если длина содержимого неизвестна.

Как и все другие аспекты API WinINet, эту функцию нельзя безопасно вызывать из DllMain или конструкторов и деструкторов глобальных объектов.

InternetSetFilePointer со временем изменился. В Internet Обозреватель 7 и более ранних версий он использовался для перемещения указателя только в пределах long. При вызове этой более старой версии функции lDistanceToMove содержит все значение. Положительное значение перемещает указатель вперед в файле; отрицательное значение перемещает его назад. lpDistanceToMoveHigh зарезервировано и имеет значение 0. В текущих версиях lpDistanceToMoveHigh является значительным значением, где будет указано любое отрицательное значение.

Примечание WinINet не поддерживает реализации сервера. Кроме того, его не следует использовать из службы. Для серверных реализаций или служб используйте службы Microsoft Windows HTTP (WinHTTP).
 

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wininet.h
Библиотека Wininet.lib
DLL Wininet.dll

См. также раздел

Общие функции

Функции WinINet