[Back to NETWORK SWAG index] [Back to Main SWAG index] [Original]
{
JEFF SHANNON
Novell/File Locking/Sharing
> Does anyone have any samples of network File sharing/access code For Turbo
> Pascal/Borland Pascal 6-7.
This is from the Advanced Turbo Pascal Techniques book by Chris Ohlsen and
Gary Stroker. It's For TP 5.5 but I'm sure you could make use of it.
Oops, I hope I didn't violate any copyright laws by posting this code. I
doubt the authors of the book would sue me as it is a FINE book and I
recommend it to all. Now the publishers are a different story...
}
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.
[Back to NETWORK SWAG index] [Back to Main SWAG index] [Original]