[Back to NETWORK SWAG index]  [Back to Main SWAG index]  [Original]

{
            ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
            º     ÚËÍÍÍË¿ÚËÍÍÍË¿ÚËÍÍÍË¿ÚËÍ» Ë¿ÚËÍÍÍË¿ÚÉÍËÍ»¿   º
            º     ³ÌÍÍÍÊÙÃÎÍÍÍδÀÊÍÍÍË¿³º º º³ÃÎÍÍ      º      º
            º     ÀÊ     ÀÊ   ÊÙÀÊÍÍÍÊÙÀÊ ÈÍÊÙÀÊÍÍÍÊÙ   Ê      º
            º                                                  º
            º     NetWare 3.11 API Library for Turbo Pascal    º
            º                      by                          º
            º                S.Perevoznik                      º
            º                     1996                         º
            ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
}
Unit NetSrv;
{ Working with file-server}

Interface

Function  CheckConsolePrivileges : boolean;
{true, if user is console operator}

Function EnableFileServerLogin : byte;
{ enable login on file server }

Function DisableFileServerLogin : byte;
{ disable user's login on file server}

Function  EnableTransactionTracking : byte;
{ enable transaction tracking }

Function  DisableTransactionTracking : byte;
{ disable transaction tracking }

Function DownFileServer(ForceFlag : integer) : byte;
{ Down File server}

Function ClearConnectionNumber(connectionNumber : word) : byte;
{ clear connection}

Function GetFileServerDescriptionStrings(Var DString: string) : byte;
{ return file server description string}

Procedure Logout;
{ logout from network}


Implementation

Uses Dos;

Function  CheckConsolePrivileges : boolean;
Var
  r : registers;
  SendPacket  : array [0..3] of byte;
  ReplyPacket : array [0..2] of byte;
  WordPtr     : ^Word;

Begin
  SendPacket[2] := 200;
  WordPtr  := addr(SendPacket);
  WordPtr^ := 1;
  WordPtr  := addr(ReplyPacket);
  WordPtr^ := 0;
  r.BX := r.DS;
  r.AH := $0E3;
  r.DS := SEG(SendPacket);
  r.SI := OFS(SendPacket);
  r.ES := SEG(ReplyPacket);
  r.DI := OFS(ReplyPacket);
  intr($21,r);
  r.DS := r.BX;
  if r.AL = 0 then CheckConsolePrivileges := true
    else CheckConsolePrivileges := false;
End;

Function EnableFileServerLogin : byte;
Var
  r : registers;
  SendPacket  : array [0..3] of byte;
  ReplyPacket : array [0..2] of byte;
  WordPtr     : ^Word;

Begin
  SendPacket[2] := 204;
  WordPtr  := addr(SendPacket);
  WordPtr^ := 1;
  WordPtr  := addr(ReplyPacket);
  WordPtr^ := 0;
  r.BX := r.DS;
  r.AH := $0E3;
  r.DS := SEG(SendPacket);
  r.SI := OFS(SendPacket);
  r.ES := SEG(ReplyPacket);
  r.DI := OFS(ReplyPacket);
  intr($21,r);
  r.DS := r.BX;
  EnableFileServerLogin := r.AL;
end;

Function DisableFileServerLogin : byte;
Var
  r : registers;
  SendPacket  : array [0..3] of byte;
  ReplyPacket : array [0..2] of byte;
  WordPtr     : ^Word;

Begin
  SendPacket[2] := 203;
  WordPtr  := addr(SendPacket);
  WordPtr^ := 1;
  WordPtr  := addr(ReplyPacket);
  WordPtr^ := 0;
  r.BX := r.DS;
  r.AH := $0E3;
  r.DS := SEG(SendPacket);
  r.SI := OFS(SendPacket);
  r.ES := SEG(ReplyPacket);
  r.DI := OFS(ReplyPacket);
  intr($21,r);
  r.DS := r.BX;
  DisableFileServerLogin := r.AL;

end;

Function  EnableTransactionTracking : byte;
Var
  r : registers;
  SendPacket  : array [0..3] of byte;
  ReplyPacket : array [0..2] of byte;
  WordPtr     : ^Word;

Begin
  SendPacket[2] := 208;
  WordPtr  := addr(SendPacket);
  WordPtr^ := 1;
  WordPtr  := addr(ReplyPacket);
  WordPtr^ := 0;
  r.BX := r.DS;
  r.AH := $0E3;
  r.DS := SEG(SendPacket);
  r.SI := OFS(SendPacket);
  r.ES := SEG(ReplyPacket);
  r.DI := OFS(ReplyPacket);
  intr($21,r);
  r.DS := r.BX;
  EnableTransactionTracking := r.AL;

end;

Function  DisableTransactionTracking : byte;

Var
  r : registers;
  SendPacket  : array [0..3] of byte;
  ReplyPacket : array [0..2] of byte;
  WordPtr     : ^Word;

Begin
  SendPacket[2] := 207;
  WordPtr  := addr(SendPacket);
  WordPtr^ := 1;
  WordPtr  := addr(ReplyPacket);
  WordPtr^ := 0;
  r.BX := r.DS;
  r.AH := $0E3;
  r.DS := SEG(SendPacket);
  r.SI := OFS(SendPacket);
  r.ES := SEG(ReplyPacket);
  r.DI := OFS(ReplyPacket);
  intr($21,r);
  r.DS := r.BX;
  DisableTransactionTracking := r.AL;

end;

Function DownFileServer(ForceFlag : integer) : byte;
Var
  r : registers;
  SendPacket  : array [0..4] of byte;
  ReplyPacket : array [0..2] of byte;
  WordPtr     : ^Word;

Begin
  SendPacket[2] := 211;
  SendPacket[3] := ForceFlag or $FF00;
  WordPtr  := addr(SendPacket);
  WordPtr^ := 2;
  WordPtr  := addr(ReplyPacket);
  WordPtr^ := 0;
  r.BX := r.DS;
  r.AH := $0E3;
  r.DS := SEG(SendPacket);
  r.SI := OFS(SendPacket);
  r.ES := SEG(ReplyPacket);
  r.DI := OFS(ReplyPacket);
  intr($21,r);
  r.DS := r.BX;
  DownFileServer := r.AL;

end;

Function ClearConnectionNumber(connectionNumber : word) : byte;
Var
  r : registers;
  SendPacket  : array [0..4] of byte;
  ReplyPacket : array [0..2] of byte;
  WordPtr     : ^Word;

Begin
  SendPacket[2] := 210;
  SendPacket[3] := ConnectionNumber;
  WordPtr  := addr(SendPacket);
  WordPtr^ := 2;
  WordPtr  := addr(ReplyPacket);
  WordPtr^ := 0;
  r.BX := r.DS;
  r.AH := $0E3;
  r.DS := SEG(SendPacket);
  r.SI := OFS(SendPacket);
  r.ES := SEG(ReplyPacket);
  r.DI := OFS(ReplyPacket);
  intr($21,r);
  r.DS := r.BX;
  ClearConnectionNumber := r.AL;

end;

Function GetFileServerDescriptionStrings(Var DString     : string) : byte;


  var
    WordPtr:^Word;
    r:registers;
    SendPacket  : array[0..3] of byte;
    ReplyPacket : array[0..514] of byte;
    i           : integer;

    begin
      SendPacket[2] := $C9;
      WordPtr := addr(SendPacket);
      WordPtr^:=1;
      WordPtr := addr(ReplyPacket);
      WordPtr^ := 514;
      r.ah := $E3;
      r.BX := r.DS;
      r.ds := seg(SendPacket);
      r.si := ofs(SendPacket);
      r.es := seg(ReplyPacket);
      r.di := ofs(ReplyPacket);
      intr($21,r);
      r.DS := r.BX;
      GetFileServerDescriptionStrings := r.AL;
      if r.AL = 0
        then
        begin
           i := 32;
           move(ReplyPacket[2],DString[1],32);
           move(i,DString[0],1);
       end;
          end;

Procedure Logout;
Var
  r : registers;
  SendPacket  : array [0..2] of byte;
  ReplyPacket : array [0..2] of byte;
  WordPtr     : ^Word;

Begin
  WordPtr  := addr(SendPacket);
  WordPtr^ := 0;
  WordPtr  := addr(ReplyPacket);
  WordPtr^ := 0;
  r.BX := r.DS;
  r.AH := 215;
  r.DS := SEG(SendPacket);
  r.SI := OFS(SendPacket);
  r.ES := SEG(ReplyPacket);
  r.DI := OFS(ReplyPacket);
  intr($21,r);
  r.DS := r.BX;

end;

End.

[Back to NETWORK SWAG index]  [Back to Main SWAG index]  [Original]