SetFilePointerEx |
Declare Function Api_SetFilePointerEx& Lib "kernel32" Alias "SetFilePointerEx" (ByVal hFile&, ByVal liDistanceToMove As Large_Integer, ByRef lpNewFilePointer As Any, ByVal dwMoveMethod&) |
||||||||
Declare Function SetFilePointerEx Lib "kernel32" Alias "SetFilePointerEx" (ByVal hFile As Long, ByVal liDistanceToMove As Large_Integer, ByRef lpNewFilePointer As Any, ByVal dwMoveMethod As Long) As Long |
|||||||||
開いたファイルのファイルポインタを移動する。 |
|||||||||
パラメータ
GENERIC_WRITE アクセスで作成されていなければならない。
動する。
プを判断するには、 GetFileType 関数を使う。 い。たとえば、複数のスレッドがファイルハンドルの共有、ファイルポインタの更新、ファイルの読み取りなどを実行するアプリケーションで
は、クリティカルセクションオブジェクトやミューテックスオブジェクトを使ってこの順序を守る必要がある。 置にだけ移動することができる。セクタの境界整列位置は、ボリュームのセクタサイズの倍数( 整数)である。ボリュームのセクタサイズを 取得するには、 GetDiskFreeSpaceEx 関数を呼び出す。移動距離だけを表してセクタの境界整列を指示しない値と FILE_FLAG_NO_BUFFERING を使って開いたハンドルを指定して SetFilePointerEx 関数を呼び出すと、関数が失敗し、 関数から
ERROR_INVALID_PARAMETER が返る。 WriteFileEx 関数を呼び出すまでファイルサイズは増えない。書き込み操作を実行すると、ファイルサイズは、書き込まれたバッファのサイ
ズをファイルポインタの位置に足したサイズに増加する。このとき、間にあるバイトは初期化されない。 置 0 を検索する。その結果返されるファイルオフセットがファイルの長さになる。ただし、この操作を実行すると、予期しない結果が発生する ことがある。たとえば、プログラムを現在のファイルポインタの場所に戻すために必要な、現在のファイルポインタの保存に失敗することがあ
る。そのため、ファイルの長さを確認するには GetFileSizeEx 関数を使った方が簡単で安全である。 を、移動距離として 0 を指定する。 |