获取网卡的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有范例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值