指定したファイルのファイルポインタを移動する。(SetFilePointerEx)
SetFilePointerEx hFile, liDistanceToMove, lpNewFilePointer, dwMoveMethod
hFile : [intptr] ファイルへのハンドル。ファイルハンドルは GENERIC_READ または GENERIC_WRITE アクセス権で作成されている必要がある。詳細は「ファイルのセキュリティとアクセス権」を参照。 liDistanceToMove : [int64] ファイルポインタを移動するバイト数。正の値はポインタをファイル先頭方向に進め、負の値は後退させる。 lpNewFilePointer : [var] 新しいファイルポインタを受け取る変数へのポインタ。NULL の場合、新しいポインタは返されない。 dwMoveMethod : [int]
(プラグイン / モジュール : kernel32.dll)
指定したファイルのファイルポインタを移動する。(SetFilePointerEx) [戻り値] 関数が成功した場合、戻り値は非ゼロである。失敗した場合はゼロである。拡張エラー情報を取得するには GetLastError を呼び出す。 [備考] この関数が返すファイルポインタはオーバーラップ読み書き操作には使用されない。オーバーラップ操作のオフセットを指定するには OVERLAPPED 構造体の Offset と OffsetHigh メンバを使用する。パイプや通信デバイスのような非シーク可能デバイスのハンドルに対して SetFilePointerEx は使用できない。hFile のファイル種別を判定するには GetFileType を使用する。マルチスレッドアプリケーションでファイルポインタを設定する際は注意を要する。共有リソースへのアクセスは同期が必要である。例えば、スレッド間でファイルハンドルを共有し、ファイルポインタを更新し、ファイルから読み込むアプリケーションは、この一連の操作をクリティカルセクションオブジェクトやミューテックスオブジェクトで保護する必要がある。詳細は「クリティカルセクションオブジェクト」「ミューテックスオブジェクト」を参照。hFile ハンドルが FILE_FLAG_NO_BUFFERING フラグ付きで開かれている場合、アプリケーションはファイルポインタをセクタ整列位置にのみ移動できる。セクタ整列位置とはボリュームのセクタサイズの整数倍となる位置である。ボリュームのセクタサイズは GetDiskFreeSpace で取得できる。FILE_FLAG_NO_BUFFERING で開かれたハンドルに対しセクタ整列でない位置となる distance-to-move 値で SetFilePointerEx を呼ぶと、関数は失敗し GetLastError は ERROR_INVALID_PARAMETER を返す。詳細は「ファイルバッファリング」を参照。ファイル末尾を超えた位置にファイルポインタを設定することはエラーではない。ファイルサイズは、SetEndOfFile、WriteFile、WriteFileEx を呼ぶまで増加しない。書き込み操作はファイルサイズをファイルポインタ位置 + 書き込みバッファサイズまで拡大し、間のバイトは未初期化となる。ファイルの長さを知るために SetFilePointerEx を使用することもできる。dwMoveMethod に FILE_END を指定しオフセット 0 にシークすれば、返るファイルオフセットがファイル長である。しかしこの手法は現在のファイルポインタを保存しないなど予期せぬ副作用を持ちうるため、代わりに GetFileSizeEx を使用するほうがシンプルで安全である。また、現在のファイルポインタ位置を問い合わせるにも SetFilePointerEx を使用でき、FILE_CURRENT の移動方法とゼロの距離を指定すればよい。Windows 8 および Windows Server 2012 では、この関数は以下の技術によってサポートされている。 (以下省略)
| プラグイン / モジュール | kernel32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_kernel32_gen2.hs |