InternetSetFilePointer-Funktion (wininet.h)
Legt eine Dateiposition für InternetReadFile fest. Dies ist ein synchroner Aufruf; Nachfolgende Aufrufe von InternetReadFile können jedoch blockiert oder zurückgegeben werden, wenn die Daten nicht aus dem Cache verfügbar sind und der Server keinen zufälligen Zugriff unterstützt.
Syntax
DWORD InternetSetFilePointer(
[in] HINTERNET hFile,
[in] LONG lDistanceToMove,
[in, out] PLONG lpDistanceToMoveHigh,
[in] DWORD dwMoveMethod,
[in] DWORD_PTR dwContext
);
Parameter
[in] hFile
Handle, das von einem vorherigen Aufruf von InternetOpenUrl (über eine HTTP- oder HTTPS-URL) oder HttpOpenRequest zurückgegeben wurde (mit dem GET- oder HEAD HTTP-Verb und an HttpSendRequest oder HttpSendRequestEx übergeben). Dieses Handle darf nicht mit dem INTERNET_FLAG_DONT_CACHE oder INTERNET_FLAG_NO_CACHE_WRITE wert erstellt worden sein.
[in] lDistanceToMove
Die niedrige Reihenfolge von 32 Bits einer signierten 64-Bit-Anzahl von Bytes zum Verschieben des Dateizeigers. Internet Explorer 7 und früher: InternetSetFilePointer hat verwendet, um den Zeiger nur innerhalb der Grenzen eines LONG zu verschieben. Beim Aufrufen dieser älteren Version der Funktion ist lpDistanceToMoveHigh reserviert und sollte auf 0 festgelegt werden. Ein positiver Wert verschiebt den Zeiger in der Datei nach vorne. Ein negativer Wert verschiebt ihn nach hinten.
[in, out] lpDistanceToMoveHigh
Ein Zeiger auf die hohen 32 Bits des zu verschiebenden 64-Bit-Abstands mit Vorzeichen. Wenn Sie die 32-Bits mit hoher Reihenfolge nicht benötigen, muss dieser Zeiger auf NULL festgelegt werden. Wenn nicht NULL, empfängt dieser Parameter auch die hohe DWORD-Reihenfolge des neuen Werts des Dateizeigers. Ein positiver Wert verschiebt den Zeiger in der Datei nach vorne. Ein negativer Wert verschiebt ihn nach hinten. Internet Explorer 7 und früher: InternetSetFilePointer hat verwendet, um den Zeiger nur innerhalb der Grenzen eines LONG zu verschieben. Beim Aufrufen dieser älteren Version der Funktion ist lpDistanceToMoveHigh reserviert und sollte auf 0 festgelegt werden.
[in] dwMoveMethod
Ausgangspunkt für die Dateizeigerverschiebung. Dieser Parameter kann einen der folgenden Werte annehmen.
Wert | Bedeutung |
---|---|
|
Ausgangspunkt ist null oder der Anfang der Datei. Wenn FILE_BEGIN angegeben ist, wird lDistanceToMove als nicht signierter Speicherort für den neuen Dateizeiger interpretiert. |
|
Der aktuelle Wert des Dateizeigers ist der Ausgangspunkt. |
|
Die aktuelle Dateiendeposition ist der Ausgangspunkt. Bei dieser Methode tritt ein Fehler auf, wenn die Länge des Inhalts unbekannt ist. |
[in] dwContext
Dieser Parameter ist reserviert und muss 0 sein.
Rückgabewert
I the function succeeds, it returns the current file position. Ein Rückgabewert von INVALID_SET_FILE_POINTER gibt einen potenziellen Fehler an und muss gefolgt von einem Aufruf von GetLastError sein.
Da INVALID_SET_FILE_POINTER ein gültiger Wert für das DWORD mit niedriger Reihenfolge des neuen Dateizeigers ist, muss der Aufrufer sowohl den Rückgabewert der Funktion als auch den von GetLastError zurückgegebenen Fehlercode überprüfen, um zu ermitteln, ob ein Fehler aufgetreten ist. Wenn ein Fehler aufgetreten ist, wird der Rückgabewert von InternetSetFilePointer INVALID_SET_FILE_POINTER und GetLastError gibt einen anderen Wert als NO_ERROR zurück.
Wenn die Funktion erfolgreich ist und lpDistanceToMoveHighNULL ist, ist der Rückgabewert der DWORD-Wert mit niedriger Reihenfolge des neuen Dateizeigers.
Beachten Sie, dass der Aufruf von InternetSetFilePointer erfolgreich war, wenn die Funktion einen anderen Wert als INVALID_SET_FILE_POINTER zurückgibt und getLastError nicht aufgerufen werden muss.
Wenn die Funktion erfolgreich ist und lpDistanceToMoveHigh nicht NULL ist, ist der Rückgabewert der DWORD-Wert der niedrigeren Reihenfolge des neuen Dateizeigers, und lpDistanceToMoveHigh enthält die hohe DWORD-Reihenfolge des neuen Dateizeigers.
Wenn ein neuer Dateizeiger ein negativer Wert ist, schlägt die Funktion fehl, der Dateizeiger wird nicht verschoben, und der von GetLastError zurückgegebene Code wird ERROR_NEGATIVE_SEEK.
Wenn lpDistanceToMoveHighNULL ist und die neue Dateiposition nicht in einen 32-Bit-Wert passt, schlägt die Funktion fehl und gibt INVALID_SET_FILE_POINTER zurück.
Hinweise
Diese Funktion kann nicht verwendet werden, nachdem das Ende der Datei von InternetReadFile erreicht wurde.
Für HINTERNET-Handles , die von HttpOpenRequest erstellt und von HttpSendRequestEx gesendet werden, muss ein Aufruf von HttpEndRequest für das Handle erfolgen, bevor InternetSetFilePointer verwendet wird.
InternetSetFilePointer kann nicht zuverlässig verwendet werden, wenn die Inhaltslänge unbekannt ist.
Wie alle anderen Aspekte der WinINet-API kann diese Funktion nicht sicher innerhalb von DllMain oder den Konstruktoren und Destruktoren globaler Objekte aufgerufen werden.
InternetSetFilePointer hat sich im Laufe der Zeit geändert. In Internet Explorer 7 und früher wurde der Zeiger nur innerhalb der Grenzen eines LONG verschoben. Beim Aufrufen dieser älteren Version der Funktion enthält lDistanceToMove den gesamten Wert. Ein positiver Wert verschiebt den Zeiger in der Datei nach vorne. Ein negativer Wert verschiebt ihn nach hinten. lpDistanceToMoveHigh ist reserviert und auf 0 festgelegt. In aktuellen Versionen ist lpDistanceToMoveHigh ein signifikanter Wert, bei dem ein negativer Wert angegeben würde.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | wininet.h |
Bibliothek | Wininet.lib |
DLL | Wininet.dll |