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

使用 GET 或 HEAD HTTP 指令動詞,在 HTTP 或 HTTPS URL) 或HttpOpenRequest (上呼叫InternetOpenUrl (傳回的控制碼,並傳遞至HttpSendRequest 或 HttpSendRequestEx) 。 此控制碼不得以 設定INTERNET_FLAG_DONT_CACHEINTERNET_FLAG_NO_CACHE_WRITE 值來建立。

[in] lDistanceToMove

帶正負號 64 位位元組數目的低順序 32 位,可移動檔案指標。 Internet Explorer 7 和更早版本: InternetSetFilePointer 用來只在 LONG 界限內移動指標。 呼叫這個舊版函式時, lpDistanceToMoveHigh 會保留,且應該設定為 0。 正值會將指標往前移動;負值會向後移動。

[in, out] lpDistanceToMoveHigh

要移動之帶正負號 64 位距離之高階 32 位的指標。 如果您不需要高階 32 位,此指標必須設定為 Null。 若不是 Null,此參數也會收到檔案指標新值的高序 DWORD。 正值會將指標往前移動;負值會向後移動。Internet Explorer 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_POINTERGetLastError 會傳回 NO_ERROR以外的值。

如果函式成功且 lpDistanceToMoveHighNull,則傳回值會是新檔案指標的低序 DWORD

請注意,如果函式傳回 INVALID_SET_FILE_POINTER以外的值, 則 InternetSetFilePointer 的呼叫已成功,而且不需要呼叫 GetLastError

如果函式成功且 lpDistanceToMoveHigh 不是 Null,則傳回值會是新檔案指標的較低順序 DWORD而 lpDistanceToMoveHigh 包含新檔案指標的高順序 DWORD

如果新的檔案指標是負值,則函式會失敗、檔案指標不會移動,而且 GetLastError 傳回的程式碼會 ERROR_NEGATIVE_SEEK

如果 lpDistanceToMoveHighNull ,而且新的檔案位置不符合 32 位值,則函式會失敗並傳回 INVALID_SET_FILE_POINTER

備註

InternetReadFile到達檔案結尾之後,就無法使用此函式。

針對HttpOpenRequest所建立並由HttpSendRequestEx傳送的HINTERNET控制碼,必須先在控制碼上呼叫HttpEndRequest,才能使用InternetSetFilePointer

如果內容長度未知,就無法可靠地使用InternetSetFilePointer

就像 WinINet API 所有其他層面一樣,您無法從 DllMain 或全域物件的建構函式和解構函式安全地呼叫此函式。

InternetSetFilePointer 已隨著時間而變更。 在 Internet Explorer 7 和更早版本中,它用來只在 LONG 界限內移動指標。 呼叫這個舊版函式時, lDistanceToMove 會包含整個值。 正值會將指標往前移動;負值會向後移動。 lpDistanceToMoveHigh 已保留,且設定為 0。 在目前的版本中, lpDistanceToMoveHigh 是一個顯著值,其中會指出任何負值。

注意 WinINet 不支援伺服器實作。 此外,不應該從服務使用它。 對於伺服器實作或服務,請使用 Microsoft Windows HTTP Services (WinHTTP)
 

規格需求

   
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 wininet.h
程式庫 Wininet.lib
Dll Wininet.dll

另請參閱

一般函式

WinINet 函式