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
ファイル ポインターの移動の開始点。 このパラメーターには、次の値のいずれかを指定できます。
値 | 説明 |
---|---|
|
開始点は 0 またはファイルの先頭です。 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 ハンドルの場合、InternetSetFilePointer を使用する前に、ハンドルで HttpEndRequest の呼び出しを行う必要があります。
コンテンツの長さが不明な場合、InternetSetFilePointer を確実に使用することはできません。
WinINet API の他のすべての側面と同様に、この関数を DllMain またはグローバル オブジェクトのコンストラクターとデストラクター内から安全に呼び出すことはできません。
InternetSetFilePointer は時間の経過と同時に変更されました。 インターネット エクスプローラー 7 以前では、LONG の境界内でのみポインターを移動するために使用されました。 この古いバージョンの関数を呼び出すと、 lDistanceToMove には値全体が含まれます。 正の値を指定すると、ファイル内でポインターが前方に移動します。負の値を指定すると、後方に移動します。 lpDistanceToMoveHigh は予約されており、 0 に設定されています。 現在のバージョンでは、 lpDistanceToMoveHigh は有効な値であり、負の値が示されます。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wininet.h |
Library | Wininet.lib |
[DLL] | Wininet.dll |