本文章中的代码段均经过验证。本人才拙,欢迎大家提意见。
一、获取本机MAC地址
#include <winsock2.h>
#include <Iphlpapi.h>
#include <stdio.h>
#pragma comment(lib,"Iphlpapi")
//#pragma warning(disable: 4996) //提示C4996错误时用到
void byte2Hex(unsigned char bData, unsigned char hex[])
{
int high = bData / 16, low = bData % 16;
hex[0] = (high < 10) ? ('0' + high) : ('A' + high - 10);
hex[1] = (low < 10) ? ('0' + low) : ('A' + low - 10);
}
int getLocalMacInfo(unsigned char *mac) //获取本机MAC址
{
ULONG ulSize = 0;
PIP_ADAPTER_INFO pInfo = NULL;
int temp = 0;
temp = GetAdaptersInfo(pInfo, &ulSize);//第一处调用,获取缓冲区大小
pInfo = (PIP_ADAPTER_INFO)malloc(ulSize);
temp = GetAdaptersInfo(pInfo, &ulSize);
int iCount = 0;
while (pInfo)//遍历每一张网卡
{
// pInfo->Address MAC址
for (int i = 0; i < (int)pInfo->AddressLength; i++)
{
byte2Hex(pInfo->Address[i], &mac[iCount]);
iCount += 2;
if (i < (int)pInfo->AddressLength - 1)
{
mac[iCount++] = '-';
}
else
{
mac[iCount++] = '#';
}
}
pInfo = pInfo->Next;
}
if (iCount > 0)
{
mac[--iCount] = '\0';
return iCount;
}
else return -1;
}
二、创建GUID
#include <winsock2.h>
#include <stdio.h>void GetGUIDInfo(char* guidStr){
static char buf[64] = { 0 };
GUID guid;
if (S_OK == ::CoCreateGuid(&guid))
{<