获得系统中网卡MAC地址的三种办法[VC/C++编程]
本文“获得系统中网卡MAC地址的三种办法[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
做好的程序员一如做人.多看多想大概他山之石可以攻玉,但永久不要成为代码的跟班. CKER
原著:Borland
Translated by CKER
第一种办法利用Microsoft的Netbios API. 这是一套通过Winsock供应底层网络支持的号令.利用Netbios的最大缺陷是您必须在系统中安装了Netbios服务(假如您在windows网络中启用了文件同享的话,这就不是问题了).除此此外,这种办法又快又精确.
Netbios API只包含了一个函数,就叫做Netbios.这个函数利用网络掌握块(network control block)构造作为参数,这个构造奉告函数要做什么.构造的定义以下:
typedef struct _NCB {
UCHAR ncb_command;
UCHAR ncb_retcode;
UCHAR ncb_lsn;
UCHAR ncb_num;
PUCHAR ncb_buffer;
WORD ncb_length;
UCHAR ncb_callname[NCBNAMSZ];
UCHAR ncb_name[NCBNAMSZ];
UCHAR ncb_rto;
UCHAR ncb_sto;
void (CALLBACK *ncb_post) (struct _NCB *);
UCHAR ncb_lana_num;
UCHAR ncb_cmd_cplt;
#ifdef _WIN64
UCHAR ncb_reserve[18];
#else
UCHAR ncb_reserve[10];
#endif
HANDLE ncb_event;
} NCB, *PNCB;
重点在于ncb_command 成员.这个成员奉告Netbios该作什么.我们利用三个号令来探测MAC地址.他们在MSDN的定义以下:
号令描写:
NCBENUM Windows NT/2000: 摆列系统中网卡的数目.利用此号令后,ncb_buffer成员指向由LANA_ENUM构造填充的缓冲区.
NCBENUM 不是尺度的 NetBIOS 3.0 号令.
NCBRESET 重置网卡.网卡在承受新的NCB号令之前必须重置.
NCBASTAT 承受本地或远程接口卡的状况.利用此号令后,ncb_buffer成员指向由ADAPTER_STATUS构造填充的缓冲区,随后是NAME_BUFFER构造的数组.
下面就是获得您系统MAC地址的步骤:
1》摆列全部的接口卡.
2》重置每块卡以获得它的精确信息.
3》查询接口卡,获得MAC地址并生成尺度的冒号脱离格局.
以上是“获得系统中网卡MAC地址的三种办法[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |