当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

获得系统中网卡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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>及时获得系统每个进程占用的CPU</b>
  • 获得系统中网卡MAC地址的三种办法
  • 搜狗输入法漏洞获得系统权限的漏洞
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .