下面这段代码是网上找到的,不过由于业务需要,我改了下:
原来返回值是字符串,我现在改为返回int64类型了
function fGetMac(adapterNum :integer):Int64;
//adapter00为指定的网卡适配器
var
NCB :TNCB; // NetBios控制块
ADAPTER :TADAPTERSTATUS; // 获取网卡状态
LANAENUM :TLANAENUM; // Netbios lana
cRC :Char;
m :Int64;
Begin
Result :=0;
Try
// 清空控制块
ZeroMemory(@NCB,SizeOf(NCB));
NCB.ncb_command := Chr(NCBENUM);
cRC := NetBios(@NCB);
// 重新设置enum命令
NCB.ncb_buffer := @LANAENUM;
NCB.ncb_length := SizeOf(LANAENUM);
cRC := NetBios(@NCB);
If Ord(cRC) <> 0 Then exit;
// 重新设定网卡
ZeroMemory(@NCB,SizeOf(NCB));
NCB.ncb_command := Chr(NCBRESET);
NCB.ncb_lana_num := LANAENUM.lana[adapterNum];
cRC := NetBios(@NCB);
If Ord(cRC) <> 0 Then exit;
// 获取网卡地址
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBASTAT);
NCB.ncb_lana_num := LANAENUM.lana[adapterNum];
StrPCopy(NCB.ncb_callname,'* ');
NCB.ncb_buffer := @ADAPTER;
NCB.ncb_length := SizeOf(ADAPTER);
cRC := NetBios(@NCB);
m :=0;
CopyMemory(@m,@ADAPTER.adapter_address,6);
Result := m;
Finally
End;
end;