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

InternetOpenUrl (HTTP または HTTPS URL) または HttpOpenRequest (GET または HEAD HTTP 動詞を使用して) への以前の呼び出しから返され、HttpSendRequest または HttpSendRequestEx に渡されたハンドル。 このハンドルは、INTERNET_FLAG_DONT_CACHEまたはINTERNET_FLAG_NO_CACHE_WRITE値が設定された状態で作成されていない必要があります。

[in] lDistanceToMove

ファイル ポインターを移動する符号付き 64 ビットバイト数の下位 32 ビット。 インターネット エクスプローラー 7 以前: ポインターを LONG の境界内にのみ移動するために使用される InternetSetFilePointer。 この古いバージョンの関数を呼び出すとき、 lpDistanceToMoveHigh は予約されており、 0 に設定する必要があります。 正の値を指定すると、ファイル内でポインターが前方に移動します。負の値を指定すると、後方に移動します。

[in, out] lpDistanceToMoveHigh

移動する符号付き 64 ビット距離の上位 32 ビットへのポインター。 上位 32 ビットが不要な場合は、このポインターを NULL に設定する必要があります。 NULL でない場合、このパラメーターはファイル ポインターの新しい値の上位 DWORD も受け取ります。 正の値を指定すると、ファイル内でポインターが前方に移動します。負の値を指定すると、後方に移動します。インターネット エクスプローラー 7 以前: ポインターを LONG の境界内にのみ移動するために使用される InternetSetFilePointer。 この古いバージョンの関数を呼び出すとき、 lpDistanceToMoveHigh は予約されており、 0 に設定する必要があります。

[in] dwMoveMethod

ファイル ポインターの移動の開始点。 このパラメーターには、次の値のいずれかを指定できます。

説明
FILE_BEGIN
開始点は 0 またはファイルの先頭です。 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_POINTERされ、GetLastError はNO_ERROR以外の値を返します。

関数が成功し、 lpDistanceToMoveHighNULL の場合、戻り値は新しいファイル ポインターの下位 DWORD になります。

関数が INVALID_SET_FILE_POINTER 以外の値を返す場合、 InternetSetFilePointer の呼び出しは成功し、 GetLastError を呼び出す必要がないことに注意してください。

関数が成功し、 lpDistanceToMoveHighNULL でない場合、戻り値は新しいファイル ポインターの下位 DWORD で、 lpDistanceToMoveHigh には新しいファイル ポインターの上位 DWORD が 含まれます。

新しいファイル ポインターが負の値の場合、関数は失敗し、ファイル ポインターは移動されず、 GetLastError によって返されるコードは ERROR_NEGATIVE_SEEK

lpDistanceToMoveHighNULL で、新しいファイル位置が 32 ビット値に収まらない場合、関数は失敗し、INVALID_SET_FILE_POINTERを返します。

解説

ファイルの末尾に InternetReadFile が到達した後は、この関数を使用できません。

HttpOpenRequest によって作成され、HttpSendRequestEx によって送信される HINTERNET ハンドルの場合、InternetSetFilePointer を使用する前に、ハンドルで HttpEndRequest の呼び出しを行う必要があります。

コンテンツの長さが不明な場合、InternetSetFilePointer を確実に使用することはできません。

WinINet API の他のすべての側面と同様に、この関数を DllMain またはグローバル オブジェクトのコンストラクターとデストラクター内から安全に呼び出すことはできません。

InternetSetFilePointer は時間の経過と同時に変更されました。 インターネット エクスプローラー 7 以前では、LONG の境界内でのみポインターを移動するために使用されました。 この古いバージョンの関数を呼び出すと、 lDistanceToMove には値全体が含まれます。 正の値を指定すると、ファイル内でポインターが前方に移動します。負の値を指定すると、後方に移動します。 lpDistanceToMoveHigh は予約されており、 0 に設定されています。 現在のバージョンでは、 lpDistanceToMoveHigh は有効な値であり、負の値が示されます。

メモ WinINet では、サーバーの実装はサポートされていません。 また、サービスから使用しないでください。 サーバーの実装またはサービスの場合は、 Microsoft Windows HTTP サービス (WinHTTP) を使用します。
 

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wininet.h
Library Wininet.lib
[DLL] Wininet.dll

関連項目

一般的な関数

WinINet 関数