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_CACHE 或 INTERNET_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, lDistanceToMove 會解譯為新檔案指標的未簽署位置。 |
|
檔案指標的目前值為起點。 |
|
目前的檔案結尾位置是起點。 如果內容長度未知,這個方法就會失敗。 |
[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到達檔案結尾之後,就無法使用此函式。
針對HttpOpenRequest所建立並由HttpSendRequestEx傳送的HINTERNET控制碼,必須先在控制碼上呼叫HttpEndRequest,才能使用InternetSetFilePointer。
如果內容長度未知,就無法可靠地使用InternetSetFilePointer。
就像 WinINet API 所有其他層面一樣,您無法從 DllMain 或全域物件的建構函式和解構函式安全地呼叫此函式。
InternetSetFilePointer 已隨著時間而變更。 在 Internet Explorer 7 和更早版本中,它用來只在 LONG 界限內移動指標。 呼叫這個舊版函式時, lDistanceToMove 會包含整個值。 正值會將指標往前移動;負值會向後移動。 lpDistanceToMoveHigh 已保留,且設定為 0。 在目前的版本中, lpDistanceToMoveHigh 是一個顯著值,其中會指出任何負值。
規格需求
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | wininet.h |
程式庫 | Wininet.lib |
Dll | Wininet.dll |