DOS Fn 5c00H: Lock File Access
Compatibility: 3.0+
Expects: AX 5c00H
BX file handle
CX:DX file offset from start of file (CX * 65536)+DX
SI:DI length in bytes of region to lock (SI * 65536)+DI
──────────────────────────────────────────────────────────────────
Returns: AX error code if CF is set to CY
──────────────────────────────────────────────────────────────────
Info: This function locks access to a region of the file identified by
the file handle in BX. The region of the file that begins at
file logical offset CX:DX extending for a length of SI:DI is
locked.
File sharing support must be present (usually installed by your
network software, or Windows, or by using the DOS Share command).
If not installed, the call returns an error code of "invalid
function number."
Locks apply to reads, writes, and opens of a file by a child or
concurrent process. When another process attempts such an access
(and the Access Mode defined during the file OPEN is a sharing
mode which disallows such access), then DOS will fail the
operation via an INT 24H Critical Error handler.
The correct way to avoid a lock violation is to attempt to lock
the region yourself and examine the returned error code. By
default, any attempt to violate a lock causes DOS to display the
"Abort, Retry, Ignore" message after three tries. You can change
the retry count via fn 440bH. And you can intercept INT 24H to
cause a less ghastly response.
To lock an entire file: It is legal to lock beyond the end of the
file. You can lock an entire file by setting CX=0, DX=0,
SI=0ffffH, and DI=0ffffH.
Notes: ■ When you unlock (via fn 5c01H), the offset and length must
match exactly with the offset and length that was locked.
■ DUPing a file handle via Fn 45H or 46H will duplicate any
locks.
■ Even if an Access Mode of "Inherit" is used when opened, the
locking mechanism does not give access privileges to child
processes created via 4bH EXEC.
■ It is important that all locks be removed from a file before a
program is terminated. You should intercept INT 23H
(Ctrl-Break) and INT 24H (Critical Error) to ensure that locks
are removed before you terminate.
■ It is recommended that you unlock as soon as possible. Always
try to lock, access the file, and unlock in one operation.
See Also: Network Functions
Directory and File Functions
DOS Functions
-♦-