VC实现获取本机MAC地址的方法
来源:爱站网时间:2019-09-06编辑:网友分享
在实际的程序开发中,经常需要在程序运行时获取mac地址,其实MAC地址作为一种标识,是网卡的物理地址,也是是计算机通信的主要硬件设备,那么VC实现获取本机MAC地址的方法有哪些呢?下面跟爱站技术频道小编一起来了解吧。
在实际的程序开发中,经常需要在程序运行时获取mac地址,其实MAC地址作为一种标识,是网卡的物理地址,也是是计算机通信的主要硬件设备,那么VC实现获取本机MAC地址的方法有哪些呢?下面跟爱站技术频道小编一起来了解吧。
完整的实例代码如下:
#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <httpext.h> #include <windef.h> #include <Nb30.h> int getMAC(char * mac) { NCB ncb; typedef struct _ASTAT_ { ADAPTER_STATUS adapt; NAME_BUFFER NameBuff [30]; }ASTAT, * PASTAT; ASTAT Adapter; typedef struct _LANA_ENUM { // le UCHAR length; UCHAR lana[MAX_LANA]; }LANA_ENUM ; LANA_ENUM lana_enum; UCHAR uRetCode; memset(&ncb, 0, sizeof(ncb)); memset(&lana_enum, 0, sizeof(lana_enum)); ncb.ncb_command = NCBENUM; ncb.ncb_buffer = (unsigned char *)&lana_enum; ncb.ncb_length = sizeof(LANA_ENUM); uRetCode = Netbios(&ncb); if(uRetCode != NRC_GOODRET) return uRetCode; for(int lana=0; lana<lana_enum.length; lana++) { ncb.ncb_command = NCBRESET; ncb.ncb_lana_num = lana_enum.lana[lana]; uRetCode = Netbios(&ncb); if(uRetCode == NRC_GOODRET) break; } if(uRetCode != NRC_GOODRET) return uRetCode; memset(&ncb, 0, sizeof(ncb)); ncb.ncb_command = NCBASTAT; ncb.ncb_lana_num = lana_enum.lana[0]; strcpy((char*)ncb.ncb_callname, "*"); ncb.ncb_buffer = (unsigned char *)&Adapter; ncb.ncb_length = sizeof(Adapter); uRetCode = Netbios(&ncb); if(uRetCode != NRC_GOODRET) return uRetCode; sprintf(mac,"%02X-%02X-%02X-%02X-%02X-%02X", Adapter.adapt.adapter_address[0], Adapter.adapt.adapter_address[1], Adapter.adapt.adapter_address[2], Adapter.adapt.adapter_address[3], Adapter.adapt.adapter_address[4], Adapter.adapt.adapter_address[5] ); return 0; } int main(int argc, char* argv[]) { char mac[200]; getMAC(mac); printf(" mac : %s \n",mac); return 0; }
另外还需要注意:必须在project->Setting里添加库文件“netapi32.lib”。
以上是关于VC实现获取本机MAC地址的方法介绍,看完后你有所收获吗?我们还整理了更多最新最全面的相关资讯,喜欢的朋友们还可以收藏爱站技术频道哦!
上一篇:解析互斥量与条件变量的详解