home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-01-28 | 2.2 KB | 97 lines | [TEXT/CWIE] |
- unit MyEthernet;
-
- interface
-
- uses
- Types;
-
- type
- EthernetAddress = packed array[0..5] of Byte;
-
- function GetEthernetAddress (var addr: EthernetAddress): OSErr;
-
- implementation
-
- uses
- Devices, ENET, Slots, ROMDefs;
-
- function OpenEthernetDriver (var ern: integer): OSErr;
- var
- sb: SpBlock;
- pb: ParamBlockRec;
- err, err2: OSErr;
- found: boolean;
- EnetStr: Str15;
- begin
- found := false; {assume no sResource found}
-
- {set up the SpBlock}
- sb.spCategory := catNetwork;
- sb.spCType := typeEthernet;
- sb.spDrvrSW := 0;
- sb.spDrvrHW := 0;
- sb.spTBMask := 3; {match only Category and CType }
- sb.spSlot := 0; {start search from here}
- sb.spID := 0; {start search from here}
- sb.spExtDev := 0; {ID of the external device}
-
- err := SNextTypeSRsrc(@sb);
- if err = noErr then begin {found an sResource match; }
- EnetStr := '.ENET';
- pb.ioCompletion := nil; {call made synchronously}
- pb.ioNamePtr := @EnetStr;
- pb.ioPermssn := fsCurPerm;
- pb.ioSFlags := 0; {reserved for driver use}
- pb.ioSlot := sb.spSlot; {slot of Ethernet card to open}
- pb.ioID := sb.spID; {sResource ID for slot}
- err := OpenSlotSync( @pb );
- if err = noErr then begin
- ern := pb.ioRefNum;
- end;
- end;
- if err <> noErr then begin
- err := OpenDriver( '.ENET', ern );
- end;
- if err <> noErr then begin
- err2 := OpenDriver( '.ENET0', ern );
- if err2 = noErr then begin
- err := noErr;
- end;
- end;
- OpenEthernetDriver := err;
- end;
-
- function GetEthernetAddress (var addr: EthernetAddress): OSErr;
- var
- err: OSErr;
- buffer: packed array[0..77] of Byte;
- pb: EParamBlock;
- ern: integer;
- begin
- err := OpenEthernetDriver(ern);
- if err = noErr then begin
- pb.ioRefNum := ern;
- pb.csCode := ENetGetInfo;
- pb.ePointer := @buffer;
- pb.eBuffSize := sizeof(buffer);
- err := EGetInfo(@pb, false);
- if err = noErr then begin
- BlockMoveData(@buffer, @addr, 6);
- end;
- end;
- GetEthernetAddress := err;
- end;
-
- end.
- function OpenEthernetDriver (var ern: integer): OSErr;
- var
- err: OSErr;
- begin
- err := OpenDriver('.ENET', ern);
- if err <> noErr then begin
- err := OpenDriver('.ENET0', ern); (* check for SCSI Ethernet devices *)
- end; (* if *)
- OpenEthernetDriver := err;
- end;
-
-