Funzione InternetSetFilePointer (wininet.h)

Imposta una posizione di file per InternetReadFile. Si tratta di una chiamata sincrona; tuttavia, le chiamate successive a InternetReadFile potrebbero bloccare o restituire in sospeso se i dati non sono disponibili dalla cache e il server non supporta l'accesso casuale.

Sintassi

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

Parametri

[in] hFile

Handle restituito da una chiamata precedente a InternetOpenUrl (in un URL HTTP o HTTPS) o HttpOpenRequest (usando il verbo GET o HEAD HTTP e passato a HttpSendRequest o HttpSendRequest o HttpSendRequestEx). Questo handle non deve essere stato creato con il set di valori INTERNET_FLAG_DONT_CACHE o INTERNET_FLAG_NO_CACHE_WRITE .

[in] lDistanceToMove

L'ordine basso a 32 bit di un numero di byte firmato a 64 bit per spostare il puntatore del file. Internet Explorer 7 e versioni precedenti: InternetSetFilePointer usato per spostare il puntatore solo entro i limiti di un oggetto LONG. Quando si chiama questa versione precedente della funzione, lpDistanceToMoveHigh è riservata e deve essere impostata su 0. Un valore positivo sposta il puntatore in avanti nel file; un valore negativo lo sposta indietro.

[in, out] lpDistanceToMoveHigh

Puntatore all'ordine elevato di 32 bit della distanza a 64 bit firmata da spostare. Se non è necessario l'ordine elevato a 32 bit, questo puntatore deve essere impostato su NULL. Quando non NULL, questo parametro riceve anche l'ordine elevato DWORD del nuovo valore del puntatore file. Un valore positivo sposta il puntatore in avanti nel file; un valore negativo lo sposta indietro. Internet Explorer 7 e versioni precedenti: InternetSetFilePointer usato per spostare il puntatore solo entro i limiti di un oggetto LONG. Quando si chiama questa versione precedente della funzione, lpDistanceToMoveHigh è riservata e deve essere impostata su 0.

[in] dwMoveMethod

Punto di partenza per lo spostamento del puntatore file. Questo parametro può avere uno dei valori seguenti.

Valore Significato
FILE_BEGIN
Il punto iniziale è zero o l'inizio del file. Se viene specificato FILE_BEGIN, lDistanceToMove viene interpretato come percorso senza segno per il nuovo puntatore file.
FILE_CURRENT
Il valore corrente del puntatore al file è il punto iniziale.
FILE_END
La posizione finale del file corrente è il punto iniziale. Questo metodo ha esito negativo se la lunghezza del contenuto è sconosciuta.

[in] dwContext

Questo parametro è riservato e deve essere 0.

Valore restituito

La funzione ha esito positivo, restituisce la posizione del file corrente. Un valore restituito di INVALID_SET_FILE_POINTER indica un potenziale errore e deve essere seguito da una chiamata a GetLastError.

Poiché INVALID_SET_FILE_POINTER è un valore valido per la DWORD a basso ordine del nuovo puntatore file, il chiamante deve controllare sia il valore restituito della funzione che il codice di errore restituito da GetLastError per determinare se si è verificato o meno un errore. Se si è verificato un errore, il valore restituito di InternetSetFilePointer è INVALID_SET_FILE_POINTER e GetLastError restituisce un valore diverso da NO_ERROR.

Se la funzione ha esito positivo e lpDistanceToMoveHigh è NULL, il valore restituito è il valore DWORD a basso ordine del nuovo puntatore di file.

Si noti che se la funzione restituisce un valore diverso da INVALID_SET_FILE_POINTER, la chiamata a InternetSetFilePointer ha avuto esito positivo e non è necessario chiamare GetLastError.

Se la funzione ha esito positivo e lpDistanceToMoveHigh non è NULL, il valore restituito è la DWORD in ordine inferiore del nuovo puntatore file e lpDistanceToMoveHigh contiene l'ordine elevato DWORD del nuovo puntatore file.

Se un nuovo puntatore di file è un valore negativo, la funzione ha esito negativo, il puntatore del file non viene spostato e il codice restituito da GetLastError è ERROR_NEGATIVE_SEEK.

Se lpDistanceToMoveHigh è NULL e la nuova posizione del file non rientra in un valore a 32 bit, la funzione ha esito negativo e restituisce INVALID_SET_FILE_POINTER.

Commenti

Questa funzione non può essere usata una volta raggiunta la fine del file da InternetReadFile.

Per gli handle DI HINTERNET creati da HttpOpenRequest e inviati da HttpSendRequestEx, è necessario eseguire una chiamata a HttpEndRequest nell'handle prima dell'uso di InternetSetFilePointer .

InternetSetFilePointer non può essere usato in modo affidabile se la lunghezza del contenuto è sconosciuta.

Come tutti gli altri aspetti dell'API WinINet, questa funzione non può essere chiamata in modo sicuro dall'interno di DllMain o dai costruttori e distruttori degli oggetti globali.

InternetSetFilePointer è cambiato nel tempo. In Internet Explorer 7 e versioni precedenti, è stato usato per spostare il puntatore solo entro i limiti di un long. Quando si chiama questa versione precedente della funzione, lDistanceToMove contiene l'intero valore. Un valore positivo sposta il puntatore in avanti nel file; un valore negativo lo sposta indietro. lpDistanceToMoveHigh è riservato e viene impostato su 0. Nelle versioni correnti , lpDistanceToMoveHigh è un valore significativo e dove verrà indicato qualsiasi valore negativo.

Nota WinINet non supporta le implementazioni del server. Inoltre, non deve essere usato da un servizio. Per le implementazioni o i servizi server usano Microsoft Windows HTTP Services (WinHTTP).
 

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wininet.h
Libreria Wininet.lib
DLL Wininet.dll

Vedi anche

Funzioni comuni

Funzioni WinINet