

Zjištění MAC adresy v Pascal/assembler/DOS programu pod XP
Až do Windows98SE mi bez problémů fungovala funkce MS-DOS EEh, která vrací MAC adresu síťové karty. Pod XP mi to ale hází nějaký hausnumero.
Zřejmě Xp už nepodporují "staré" MS-DOS služby.
Poradíte někdo jestli existuje něco takového i pod XP? Zatím Googluju bezúspěchu
PROCEDURE GetNode( var hex_addr: string; var retcode: integer );
{ get the physical station address }
Const
Hex_Set :packed array[0..15] of char = '0123456789ABCDEF';
Begin { GetNode }
{Get the physical address from the Network Card}
Regs.Ah := $EE;
regs.ds := 0;
regs.es := 0;
MsDos(Regs);
hex_addr := '';
hex_addr := hex_addr + hex_set[(regs.ch shr 4)];
hex_addr := hex_addr + hex_set[(regs.ch and $0f)];
hex_addr := hex_addr + hex_set[(regs.cl shr 4) ];
hex_addr := hex_addr + hex_set[(regs.cl and $0f)];
hex_addr := hex_addr + hex_set[(regs.bh shr 4)];
hex_addr := hex_addr + hex_set[(regs.bh and $0f)];
hex_addr := hex_addr + hex_set[(regs.bl shr 4)];
hex_addr := hex_addr + hex_set[(regs.bl and $0f)];
hex_addr := hex_addr + hex_set[(regs.ah shr 4)];
hex_addr := hex_addr + hex_set[(regs.ah and $0f)];
hex_addr := hex_addr + hex_set[(regs.al shr 4)];
hex_addr := hex_addr + hex_set[(regs.al and $0f)];
retcode := 0;
End; { Getnode }
Ked nejdu DOS sluzby tak musis urobit Win32 aplikaciu (a nie 16bit DOS aplikaciu), t.j. musis pouzit iny prekladac (napr. visual studio express je zdarma, google). Mozes urobit konzolovu Win32 aplikaciu, ta sa sprava z hladiska pouzivatela vpodstate ako DOS aplikacia.
A pouzijes napr. WinAPI funkciu GetAdaptersInfo
http://msdn.microsoft.com/en-us/library/aa365917(V S.85).aspx
mas tam aj zdrojak prikladu, ten priklad je kompletny zdrojak konzolovej aplikacie.
P.S. aj Win32 aplikacie sa daju robit v pascali (delphi) alebo aj v assembleri (napr. vo VC++ cez _asm apod).
Jednou z moznosti je spustit nejakou systemovou utilitku, tu presmerovat do souboru a vysledek pak zpracovat.
Mnohem rozumnejsi by bylo pouzit Win32 aplikaci (klidne konzolovou bez oken), ktera by pouzivala standardni sluzby (API funkce) systemu.
Raději bych nerozumně zůstal u DOS aplikace.
Zaráží mě, že všechny ostatní funkce (komunikace se serverem Novell jako zjišťování jména uživatele, zařazení do skupin, datum a čas přihlášení) touto službou (vlastně sw přerušení 21h) fungují pořád.
Nemůžu ale najít popis té služby EEh (většinou seznamy končí někde u 57h), možná se pod XP musí jen něco upřesnit, nevím třeba už nemají implicitní síťovou kartu nebo tak.
Už jsem něco o té službě našel. Zdá se, že jde o zjišťování MAC prostřednictvím Novell Netware (zřejmě služba klienta). Žeby u XP ve windovsáckém klientovi Novellu nebyla podporována?
Funguje pod Vista, preložené v Delphi2007
Tohle je pokud tomu dobře rozumím zjišťování MAC adresy síťovky jiného počítače podle zadané IP. Já potřebuju zjistit MAC adresu siťovky počítače na kterém to spouštím, IP adresu ani nemusí mít nastavenu.
Tak hlásím, že problém je vyřešen, použil jsem jinou službu: E3h, která funguje i pod XP. Vlastně obchází XP a dotazuje se na MAC mého PC přes Novell server.