VC实现获取本机MAC地址的方法

 更新时间:2014年07月23日 10:33:16   投稿:shichen2014  
这篇文章主要介绍了VC实现获取本机MAC地址的方法,需要的朋友可以参考下

本文实例采用vc6.0运行环境,通过实例实现获得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”。

相关文章

  • C语言实现串的顺序存储表示与基本操作

    C语言实现串的顺序存储表示与基本操作

    这篇文章主要为大家详细介绍了C语言实现串的顺序存储表示与基本操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C语言超详细讲解指针与结构体

    C语言超详细讲解指针与结构体

    指针提供了对地址操作的一种方法,因此,使用指针可使得C语言能够更高效地实现对计算机底层硬件的操作。另外,通过指针可以更便捷地操作数组。C数组允许定义可存储相同类型数据项的变量,结构是C编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项
    2022-05-05
  • C语言中scanf函数与空格回车的用法说明

    C语言中scanf函数与空格回车的用法说明

    这篇文章主要介绍了C语言中scanf函数与空格回车的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • C++变量存储的生命周期与作用域实例代码精讲

    C++变量存储的生命周期与作用域实例代码精讲

    这篇文章主要介绍了C++变量存储的生命周期与作用域,从创建到消亡的完整过程,例如人从出生到死亡的整个过程就是一个生命周期。本文将通过示例为大家详细讲讲,感兴趣的可以学习一下
    2022-10-10
  • C++11 强类型枚举相关总结

    C++11 强类型枚举相关总结

    这篇文章主要介绍了C++11 强类型枚举的相关资料,帮助大家更好的理解和学习使用c++11,感兴趣的朋友可以了解下
    2021-02-02
  • 利用C语言实现扫雷小游戏

    利用C语言实现扫雷小游戏

    这篇文章主要为大家详细介绍了利用C语言实现扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • C/C++实现手写数字识别的示例详解

    C/C++实现手写数字识别的示例详解

    这篇文章主要为大家详细介绍了如何使用C/C++实现手写数字识别,分别处理 32*32 文本数据集和mnist 28*28 png数据集,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-10-10
  • 使用C++实现FTP上传和下载

    使用C++实现FTP上传和下载

    当在Windows上使用C++进行FTP上传和下载时,您可以使用libcurl库来简化操作,本文将为大家详细介绍具体步骤,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • C++字符数组、字符数组指针和string类

    C++字符数组、字符数组指针和string类

    这篇文章主要介绍了C++字符数组、字符数组指针和string类,string是一个类而不是基本数据类型,数组不含有处理函数,下面更多详细内容,需要的小伙伴可以参考下面文章
    2022-03-03
  • C++基于单链表实现学生成绩管理系统

    C++基于单链表实现学生成绩管理系统

    这篇文章主要为大家详细介绍了C++基于单链表实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论