home *** CD-ROM | disk | FTP | other *** search
- Unit FileLock;
-
- INTERFACE
-
- Uses
- DOS;
-
- Function Lock ( Var Untyped; pos, size : LongInt ) : Boolean;
- Function UnLock ( Var Untyped; pos, size : LongInt ) : Boolean;
-
- IMPLEMENTATION
-
- Function Lock ( Var Untyped; pos, size : LongInt ) : Boolean;
- Var
- reg : Registers;
- f : File absolute Untyped;
- Begin
- pos := pos * FileRec ( f ).RecSize;
- size := size * FileRec ( f ).RecSize;
- reg.AH := $5C;
- reg.AL := $00;
- reg.BX := FileRec ( f ).Handle;
- reg.CX := Hi ( pos );
- reg.DX := Lo ( pos );
- reg.SI := Hi ( size );
- reg.DI := Lo ( size );
- Intr ( $21, reg );
- If ( ( reg.Flags AND FCarry ) <> 0 ) Then
- Lock := FALSE
- Else
- Lock := TRUE;
- End;
-
- Function UnLock ( Var Untyped; pos, size : LongInt ) : Boolean;
- Var
- reg : Registers;
- f : File absolute Untyped;
- Begin
- pos := pos * FileRec ( f ).RecSize;
- size := size * FileRec ( f ).RecSize;
- reg.AH := $5C;
- reg.AL := $01;
- reg.BX := FileRec ( f ).Handle;
- reg.CX := Hi ( pos );
- reg.DX := Lo ( pos );
- reg.SI := Hi ( size );
- reg.DI := Lo ( size );
- Intr ( $21, reg );
- If ( ( reg.Flags AND FCarry ) <> 0 ) Then
- UnLock := FALSE
- Else
- UnLock := TRUE;
- End;
-
- End.
-