<Return[JKL]><Top>

LockFile

Declare Function Api_LockFile& Lib "kernel32" Alias "LockFile" (ByVal hFile&, ByVal dwFileOffsetLow&, ByVal dwFileOffsetHigh&, ByVal nNumberOfBytesToLockLow&, ByVal nNumberOfBytesToLockHigh&)

Declare Function LockFile Lib "kernel32" (ByVal hFile As Long, ByVal dwFileOffsetLow As Long, ByVal dwFileOffsetHigh As Long, ByVal nNumberOfBytesToLockLow As Long, ByVal nNumberOfBytesToLockHigh As Long) As Long

開いているファイル内の指定された領域をロックする。領域をロックすると、他のプロセスがその領域にアクセスすることを防止できる。

パラメータ
hFile
    ロック対象の領域が存在するファイルのハンドルを指定する。このハンドルは、GENERIC_READ または GENERIC_WRITE の一方また

    は両方のアクセス権を備えていなければならない。
dwFileOffsetLow
    ロックを開始するべきオフセット開始バイトの下位ダブルワード(low-order doubleword)を指定する。
dwFileOffsetHigh
    ロックを開始するべきオフセット開始バイトの上位ダブルワード(high-order doubleword)を指定する。
    Windows 95/98:dwFileOffsetHigh は 0 でなければならない。このパラメータは、dwFileOffsetLow パラメータの符号拡張であり、

    dwFileOffsetLow パラメータ単独で、2GB ではなく 4GB の大きさを表せるようになる。それ以外の値は拒否される。
nNumberOfBytesToLockLow
    ロックするべきバイト数の下位ダブルワードを指定する。
nNumberOfBytesToLockHigh
    ロックするべきバイト数の上位ダブルワードを指定する。
 

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、 関数を使う。

解説
    ファイルの特定の領域をロックすると、ロック側プロセスはその領域に対する排他アクセスを取得する。ファイルロックは、ロック側プロセスが

    作成したプロセスへは継承されない。
    ファイルの特定の領域をロックすると、ほかのプロセスはその領域の読み取りも書き込みもできない。

    現在のファイルの終わり(EOF)を超える領域をロックしても、エラーにはならない。
    ロック対象の領域の指定は、既にロックされている領域と重なってはならない。
    LockFile 関数がファイルの特定の領域をロックできない場合、この関数は即座に 0 を返す。

    ブロックを行う(ロックを獲得できるまで待機する)ことはない。ロックを獲得するまでブロックを行うファイルロックを要求するには、

    LOCKFILE_FAIL_IMMEDIATELY を指定せずに LockFileEx 関数を呼び出す。
    ファイルの領域のロックを解除するには、UnlockFile 関数を使う。