home *** CD-ROM | disk | FTP | other *** search
- {
- [ Does anyone know the syntax For Novell-specific interrupts in Pascal
- [(or C)? I have posted this message in all the pascal confs nad haven't
- [had any replies. Any help is appreciated.
- [ Specifically, I need to use interrupts to find the username, security
- [in a certain directory and groups belongs to.
-
- Since this is Novell-specific I hope the moderator won't mind if I
- answer this one in this conference, rather than Pascal conf...
-
- You Absolutely NEED a copy of "System Calls - Dos" from Novell. This
- book has every last call you'll ever need For getting inFormation out of
- NetWare. Warning: some of their inFormation is erroneous, and you'll
- just have to do things like count up the size of the Reply buffers, For
- example, and not trust their reported Record sizes.
-
- Just as an example of how to use the inFormation from the System Calls
- book, here's an example of a Function I slapped together to return a
- 3-Character username. Pretty much all the Novell calls work the same
- way: you set up a Request buffer and a Reply buffer, then you read your
- results into whatever Format you want them. Hope this helps:
- }
-
- Function GetNetUserID:String;
- Var
- NovRegs:Registers;
- Answer:String[3];
- iii:Integer;
- ConnectNo:Byte;
- Request : Record
- Len : Word; {LO-HI}
- SubF : Byte;
- ConnNum: Word; {HI-LO}
- end;
- Reply : Record
- Len : Word; {LO-HI}
- ObjID : LongInt; {HI-LO}
- ObjType: Word;
- ObjName: Array[1..48] of Byte;
- LogTime: Array[1..7] of Byte;
- end;
- begin
- if (ReqdNetType <> Novell) then
- GetNetUserID := copy(ParamStr(2),1,3);
- if (ReqdNetType = Novell) then
-
- begin
-
- With NovRegs do
- begin
- AH := $dc;
- AL := $00;
- cx := $0000;
- end;
-
- MsDos(NovRegs);
- ConnectNo:=NovRegs.AL;
-
- For iii := 1 to 48 do
- begin
- Reply.ObjName[iii] := $00;
- end;
-
- With Request do
- begin
- Len := Sizeof(Request) - 2;
- SubF := $16;
- ConnNum:= (ConnectNo);
- end;
-
- Reply.Len := Sizeof(Reply) - 2;
-
- With NovRegs do
- begin
- AH := $e3;
- DS := Seg(Request);
- SI := ofs(Request);
- ES := Seg(Reply);
- DI := ofs(Reply);
- end;
-
- MsDos(NovRegs);
- Answer:=' ';
-
- For iii:= 1 to 3 do
- begin
- Answer[iii]:= chr(Reply.ObjName[iii]);
- end;
-
- GetNetUserID:= Answer;
- end;
- end; {GetNetUserID}
-
- {
- That $e3 in the AH register is the generic bindery call. $16 is the
- subFunction For "Get Connection Name" in the Bindery calls.
- }