取mac信息的示例代码

来源:互联网 发布:windows xp停止更新 编辑:程序博客网 时间:2024/06/17 22:48
// TestHardwareInfo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <windows.h>#include <nb30.h>#pragma comment(lib,"netapi32.lib")#include <iostream>using namespace std;typedef struct _ASTAT_{ADAPTER_STATUS adapt;NAME_BUFFER NameBuff[30];} ASTAT, *PASTAT;void getMac(char * mac, size_t bufSize){ASTAT Adapter;NCB Ncb;UCHAR uRetCode;LANA_ENUM lenum;int i = 0;memset(&Ncb, 0, sizeof(Ncb));Ncb.ncb_command = NCBENUM;Ncb.ncb_buffer = (UCHAR *)&lenum;Ncb.ncb_length = sizeof(lenum);uRetCode = Netbios(&Ncb);printf("The NCBENUM return adapter number is: %d \n ", lenum.length);for (i = 0; i < lenum.length; i++){memset(&Ncb, 0, sizeof(Ncb));Ncb.ncb_command = NCBRESET;Ncb.ncb_lana_num = lenum.lana[i];uRetCode = Netbios(&Ncb);memset(&Ncb, 0, sizeof(Ncb));Ncb.ncb_command = NCBASTAT;Ncb.ncb_lana_num = lenum.lana[i];strcpy_s((char *)Ncb.ncb_callname, 16, "* ");Ncb.ncb_buffer = (unsigned char *)&Adapter;Ncb.ncb_length = sizeof(Adapter);uRetCode = Netbios(&Ncb);if (uRetCode == 0){//sprintf(mac, "%02x-%02x-%02x-%02x-%02x-%02x ",sprintf_s(mac, bufSize, "%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]);//printf( "The Ethernet Number on LANA %d is: %s\n ", lenum.lana[i], mac);}}}int _tmain(int argc, _TCHAR* argv[]){char mac[256];memset(mac, 0, sizeof(mac));getMac(mac, sizeof(mac));cout << mac << endl;cin.get();return 0;}

0 0
原创粉丝点击