獲取網卡的MAC地址

 

第一種方法:使用NetBIOS

包含頭文件:nb30.h

支持庫:Netapi32.lib

該方法只使用一個函數:Netbios(PNCB pncb),但是使用過程有點複雜,第二種方法比較簡單

 

需要用到3個結構:NCB,LANA_ENUM,ADAPTER_STATUS

(只寫上核心部分,其實如果只想要物理網卡的MAC地址,直接調用第3步就行了,這裏可以列出多個MAC地址,除物理的外都是虛擬的)

1、用NCBENUM命令枚舉系統中網卡的數量

NCB ncb;

LANA_ENUM lana_enum;

ADAPTER_STATUS adapter;

 

memset(&ncb,0,sizeof(ncb));

ncb.ncb_command = NCBENUM;

ncb.ncb_buffer = (unsigned char*)&lana_enum;

ncb.ncb_length = sizeof(lana_enum);

Netbios(&ncb);   成功則返回0,網卡數量在lana_enum.length

 

2、用NCBRESET重置網卡,網卡接受新的NCB命令時必須重置

memset(&ncb,0,sizeof(ncb));

ncb.ncb_command = NCBRESET;

ncb.ncb_lana_num = lana_enum.lana;  lana_enum是第一步獲取

Netbios(&ncb);

 

3、用NCBASTAT接受本地或遠程接口卡的狀態

memset(&ncb,0,sizeof(ncb));

ncb.ncb_command = NCBASTAT;

ncb.ncb_lana_num = lana_enum.lana;  同樣爲第一步獲取的

strcpy((char*)ncb.ncb_callname,"*  ");  該參數書上說是被呼叫應用的名字,還沒搞懂啥意思

ncb.ncb_buffer = (unsigned char*)&adapter;

ncb.ncb_length = sizeof(adapter);

Netbios(&ncb);

 

MAC網卡地址:adapter.adapter_address

 

第二種方法:使用GetAdapterInfo

查詢SDK有範例

發佈了9 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章