InternetSetFilePointer

InternetReadFile のファイル位置を設定する。本呼び出しは同期だが、後続の InternetReadFile の呼び出しは、データがキャッシュから利用可能でなく、かつサーバーがランダムアクセスをサポートしていない場合にブロックしたり pending を返したりする可能性がある。

InternetSetFilePointer hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod, dwContext

hFile : [intptr] InternetOpenUrl (HTTP または HTTPS URL に対するもの)、または HttpOpenRequest (GET または HEAD HTTP 動詞を使用し HttpSendRequest または HttpSendRequestEx に渡されたもの) の以前の呼び出しから返されたハンドル。本ハンドルは INTERNET_FLAG_DONT_CACHE または INTERNET_FLAG_NO_CACHE_WRITE を設定して作成されたものであってはならない。
lDistanceToMove : [int] ファイルポインタを移動する符号付き 64 ビットバイト数の下位 32 ビット。Internet Explorer 7 以前: InternetSetFilePointer はポインタを LONG の範囲内でのみ移動していた。この古いバージョンの関数を呼び出す際、lpDistanceToMoveHigh は予約されており 0 に設定すべきである。正の値はファイル内でポインタを前方に、負の値は後方に移動する。
lpDistanceToMoveHigh : [var] 符号付き 64 ビット移動距離の上位 32 ビットへのポインタ。上位 32 ビットが不要な場合、本ポインタは NULL に設定しなければならない。NULL でない場合、本パラメータは新しいファイルポインタ値の上位 DWORD も受け取る。正の値はファイル内でポインタを前方に、負の値は後方に移動する。Internet Explorer 7 以前: InternetSetFilePointer はポインタを LONG の範囲内でのみ移動していた。この古いバージョンの関数を呼び出す際、lpDistanceToMoveHigh は予約されており 0 に設定すべきである。
dwMoveMethod : [int] 
dwContext : [int] 本パラメータは予約されており、0 を指定しなければならない。

(プラグイン / モジュール : wininet.dll)

解説

InternetReadFile のファイル位置を設定する。本呼び出しは同期だが、後続の InternetReadFile
の呼び出しは、データがキャッシュから利用可能でなく、かつサーバーがランダムアクセスをサポートしていない場合にブロックしたり pending
を返したりする可能性がある。

[戻り値]
関数が成功した場合、現在のファイル位置を返す。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
は時間とともに変更されてきた。Internet Explorer 7 以前ではポインタを LONG
の範囲内でのみ移動していた。この古いバージョンの関数を呼び出す際、lDistanceToMove
に値全体が格納される。正の値はファイル内でポインタを前方に、負の値は後方に移動する。lpDistanceToMoveHigh
は予約されており 0 に設定される。現行バージョンでは lpDistanceToMoveHigh
は意味のある値であり、負の値も指定可能である。注意: WinINet
はサーバー実装をサポートしていない。さらに、サービスから使用すべきでもない。サーバー実装やサービスでは Microsoft Windows
HTTP Services (WinHTTP) を使用すること。

情報

プラグイン / モジュールwininet.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の wininet.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_wininet_gen2.hs