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

    {
    [   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.
    }

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