检测网卡的地址(40分)

  • 主题发起人 主题发起人 wangshengli0208
  • 开始时间 开始时间
W

wangshengli0208

Unregistered / Unconfirmed
GUEST, unregistred user!
function TForm1.NBGetAdapterAddress(a: integer): string; //a指定多个网卡适配器中的哪一个0,1,2...
var
NCB: TNCB; // Netbios control block file://NetBios控制块
ADAPTER: TADAPTERSTATUS; // Netbios adapter status//取网卡状态
LANAENUM: TLANAENUM; // Netbios lana
intIdx: Integer; // Temporary work value//临时变量
cRC: Char; // Netbios return code//NetBios返回值
strTemp: string; // Temporary string//临时变量
begin

// Initialize

Result := '';
try
// Zero control bloclk

ZeroMemory(@NCB, SizeOf(NCB));

// Issue enum command

NCB.ncb_command := Chr(NCBENUM);
cRC := NetBios(@NCB); // Reissue enum command
NCB.ncb_buffer := @LANAENUM;
NCB.ncb_length := SizeOf(LANAENUM);
cRC := NetBios(@NCB);
if Ord(cRC) <> 0 then
exit;

// Reset adapter
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBRESET);
NCB.ncb_lana_num := LANAENUM.lana[a];
cRC := NetBios(@NCB);
if Ord(cRC) <> 0 then
exit;
// Get adapter address
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBASTAT);
NCB.ncb_lana_num := LANAENUM.lana[a];
StrPCopy(NCB.ncb_callname, '*');
NCB.ncb_buffer := @ADAPTER;
NCB.ncb_length := SizeOf(ADAPTER);
cRC := NetBios(@NCB);
// Convert it to string
strTemp := '';
for intIdx := 0 to 5 do
strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[intIdx]), 2);
Result := strTemp;
finally
end;
end;
这段程序为什么在XP下能正确检测到我的网卡物理地址,我又重装了2000检测到了错误的结果,并且把这段程序移植到其他计算机检测不到任何结果呢。
急,请各位高手指教。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2433861
http://www.delphibbs.com/delphibbs/dispq.asp?lid=952383
 
后退
顶部