Función InternetSetFilePointer (wininet.h)

Establece una posición de archivo para InternetReadFile. Esta es una llamada sincrónica; Sin embargo, las llamadas posteriores a InternetReadFile podrían bloquear o devolver pendientes si los datos no están disponibles en la memoria caché y el servidor no admite el acceso aleatorio.

Sintaxis

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

Parámetros

[in] hFile

Identificador devuelto de una llamada anterior a InternetOpenUrl (en una dirección URL HTTP o HTTPS) o HttpOpenRequest (mediante el verbo HTTP GET o HEAD y pasado a HttpSendRequest o HttpSendRequestEx). Este identificador no se debe haber creado con el INTERNET_FLAG_DONT_CACHE o INTERNET_FLAG_NO_CACHE_WRITE valor establecido.

[in] lDistanceToMove

El orden bajo de 32 bits de un número de bytes con signo de 64 bits para mover el puntero de archivo. Internet Explorer 7 y versiones anteriores: InternetSetFilePointer usado para mover el puntero solo dentro de los límites de un long. Al llamar a esta versión anterior de la función, lpDistanceToMoveHigh está reservado y debe establecerse en 0. Un valor positivo mueve el puntero hacia delante en el archivo; un valor negativo lo mueve hacia atrás.

[in, out] lpDistanceToMoveHigh

Puntero al orden alto de 32 bits de la distancia de 64 bits con signo que se va a mover. Si no necesita el orden alto de 32 bits, este puntero debe establecerse en NULL. Cuando no es NULL, este parámetro también recibe el DWORD de orden alto del nuevo valor del puntero de archivo. Un valor positivo mueve el puntero hacia delante en el archivo; un valor negativo lo mueve hacia atrás. Internet Explorer 7 y versiones anteriores: InternetSetFilePointer usado para mover el puntero solo dentro de los límites de un long. Al llamar a esta versión anterior de la función, lpDistanceToMoveHigh está reservado y debe establecerse en 0.

[in] dwMoveMethod

Punto de partida para el movimiento del puntero de archivo. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
FILE_BEGIN
El punto inicial es cero o el principio del archivo. Si se especifica FILE_BEGIN, lDistanceToMove se interpreta como una ubicación sin firmar para el nuevo puntero de archivo.
FILE_CURRENT
El valor actual del puntero de archivo es el punto inicial.
FILE_END
La posición actual del final del archivo es el punto de partida. Este método produce un error si se desconoce la longitud del contenido.

[in] dwContext

Este parámetro está reservado y debe ser 0.

Valor devuelto

La función se realiza correctamente, devuelve la posición del archivo actual. Un valor devuelto de INVALID_SET_FILE_POINTER indica un posible error y debe ir seguido de una llamada a GetLastError.

Dado que INVALID_SET_FILE_POINTER es un valor válido para el DWORD de orden bajo del nuevo puntero de archivo, el autor de la llamada debe comprobar el valor devuelto de la función y el código de error devuelto por GetLastError para determinar si se ha producido o no un error. Si se ha producido un error, el valor devuelto de InternetSetFilePointer es INVALID_SET_FILE_POINTER y GetLastError devuelve un valor distinto de NO_ERROR.

Si la función se ejecuta correctamente y lpDistanceToMoveHigh es NULL, el valor devuelto es el DWORD de orden bajo del nuevo puntero de archivo.

Tenga en cuenta que si la función devuelve un valor distinto de INVALID_SET_FILE_POINTER, la llamada a InternetSetFilePointer se ha realizado correctamente y no es necesario llamar a GetLastError.

Si la función se ejecuta correctamente y lpDistanceToMoveHigh no es NULL, el valor devuelto es el DWORD de orden inferior del nuevo puntero de archivo y lpDistanceToMoveHigh contiene el DWORD de orden alto del nuevo puntero de archivo.

Si un nuevo puntero de archivo es un valor negativo, se produce un error en la función, el puntero de archivo no se mueve y el código devuelto por GetLastError se ERROR_NEGATIVE_SEEK.

Si lpDistanceToMoveHigh es NULL y la nueva posición del archivo no cabe en un valor de 32 bits, se produce un error en la función y devuelve INVALID_SET_FILE_POINTER.

Comentarios

Esta función no se puede usar una vez que InternetReadFile haya alcanzado el final del archivo.

En el caso de los identificadores HINTERNET creados por HttpOpenRequest y enviados por HttpSendRequestEx, se debe realizar una llamada a HttpEndRequest en el identificador antes de usar InternetSetFilePointer .

InternetSetFilePointer no se puede usar de forma confiable si se desconoce la longitud del contenido.

Al igual que todos los demás aspectos de la API de WinINet, esta función no se puede llamar de forma segura desde DllMain ni desde los constructores y destructores de objetos globales.

InternetSetFilePointer ha cambiado con el tiempo. En Internet Explorer 7 y versiones anteriores, se usa para mover el puntero solo dentro de los límites de un LONG. Al llamar a esta versión anterior de la función, lDistanceToMove contiene todo el valor. Un valor positivo mueve el puntero hacia delante en el archivo; un valor negativo lo mueve hacia atrás. lpDistanceToMoveHigh está reservado y se establece en 0. En las versiones actuales, lpDistanceToMoveHigh es un valor significativo y donde se indicaría cualquier valor negativo.

Nota WinINet no admite implementaciones de servidor. Además, no se debe usar desde un servicio. En el caso de las implementaciones de servidor o los servicios, use los servicios HTTP de Microsoft Windows (WinHTTP).
 

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado wininet.h
Library Wininet.lib
Archivo DLL Wininet.dll

Consulte también

Funciones comunes

Funciones de WinINet