{ ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º ÚËÍÍÍË¿ÚËÍÍÍË¿ÚËÍÍÍË¿ÚËÍ» Ë¿ÚËÍÍÍË¿ÚÉÍËÍ»¿ º º ³ÌÍÍÍÊÙÃÎÍÍÍδÀÊÍÍÍË¿³º º º³ÃÎÍÍ º º º ÀÊ ÀÊ ÊÙÀÊÍÍÍÊÙÀÊ ÈÍÊÙÀÊÍÍÍÊÙ Ê º º º º 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.