VC++ 获取mac地址
2015-12-12 12:23
513 查看
原文链接:http://www.cnblogs.com/SteveCheung/archive/2012/07/18/2597449.html
1 // MacAddress.cpp : Defines the entry point for the console application. 2 // 3 4 #include "stdafx.h" 5 #include <windows.h> 6 #include <wincon.h> 7 #include <stdlib.h> 8 #include <stdio.h> 9 #include <time.h> 10 #include <Nb30.h> 11 #pragma comment(lib,"netapi32.lib") 12 13 int GetMac(char * mac) 14 { 15 NCB ncb; 16 typedef struct _ASTAT_ 17 { 18 ADAPTER_STATUS adapt; 19 NAME_BUFFER NameBuff [30]; 20 }ASTAT,*PASTAT; 21 22 ASTAT Adapter; 23 24 typedef struct _LANA_ENUM 25 { 26 UCHAR length; 27 UCHAR lana[MAX_LANA]; 28 }LANA_ENUM; 29 30 LANA_ENUM lana_enum; 31 UCHAR uRetCode; 32 memset(&ncb, 0, sizeof(ncb)); 33 memset(&lana_enum, 0, sizeof(lana_enum)); 34 ncb.ncb_command = NCBENUM; 35 ncb.ncb_buffer = (unsigned char *)&lana_enum; 36 ncb.ncb_length = sizeof(LANA_ENUM); 37 uRetCode = Netbios(&ncb); 38 39 if(uRetCode != NRC_GOODRET) 40 return uRetCode; 41 42 for(int lana=0; lana<lana_enum.length; lana++) 43 { 44 ncb.ncb_command = NCBRESET; 45 ncb.ncb_lana_num = lana_enum.lana[lana]; 46 uRetCode = Netbios(&ncb); 47 if(uRetCode == NRC_GOODRET) 48 break; 49 } 50 51 if(uRetCode != NRC_GOODRET) 52 return uRetCode; 53 54 memset(&ncb, 0, sizeof(ncb)); 55 ncb.ncb_command = NCBASTAT; 56 ncb.ncb_lana_num = lana_enum.lana[0]; 57 strcpy((char*)ncb.ncb_callname, "*"); 58 ncb.ncb_buffer = (unsigned char *)&Adapter; 59 ncb.ncb_length = sizeof(Adapter); 60 uRetCode = Netbios(&ncb); 61 62 if(uRetCode != NRC_GOODRET) 63 return uRetCode; 64 65 sprintf(mac,"%02X-%02X-%02X-%02X-%02X-%02X", 66 Adapter.adapt.adapter_address[0], 67 Adapter.adapt.adapter_address[1], 68 Adapter.adapt.adapter_address[2], 69 Adapter.adapt.adapter_address[3], 70 Adapter.adapt.adapter_address[4], 71 Adapter.adapt.adapter_address[5]); 72 73 return 0; 74 } 75 76 77 int main(int argc, char* argv[]) 78 { 79 char mac[200]; 80 GetMac(mac); 81 printf("The Mac Address is : %s \n",mac); 82 83 system("pause"); 84 return 0; 85 }
相关文章推荐
- (Win32): 已加载“C:\Windows\System32\ntdll.dll”。无法查找或打开 PDB 文件。
- C++中的成员变量是独立的,成员方法是共享的。
- CPP 6th——类(7)
- c++操作xml
- 11_排序二叉树删除-3
- c语言学习笔记之指针
- String C++完整实现。
- C语言总结
- c语言学习笔记之函数指针和指针函数
- c语言学习笔记之const关键字(理解)
- c语言学习笔记之内存分区
- Android:JNI函数编码风格(C风格与C++风格)
- c与c++相互调用机制分析与实现
- C++ Primer Plus第六版 第十七章 编程练习答案(完结篇...木有18章)
- C++ 模板详解(二)
- C51单片机学习(二):中断系统和定时器
- C++ Primer Pluse(第6版)中文版 第12章编程练习第5题
- C++ DLL 创建实例 导出类和函数
- C语言解释器Java版-3-内存值管理
- C++ 模板详解(一)