(注:仅支持pc端的设备UUID获取,不支持android和ios移动设备UUID的获取)
原料:vs2013+cocos2dx3.3+openssl+macaddr.h/cpp
第一步:
下载好OpenSSL,导入openssl文件夹到工程目录下
导入macaddr.h和macaddr.cpp到工程
头文件macaddr.h
#ifndef __MACADDR_H__
#define __MACADDR_H__
#include <windows.h>
#define MACADDRESS_BYTELEN 6 // MAC地址字节长度
typedef struct _MACADDRESS
{
BYTE SrcMacAddr[MACADDRESS_BYTELEN]; // 原生MAC地址
BYTE CurMacAddr[MACADDRESS_BYTELEN]; // 当前MAC地址
} MACADDRESS;
#ifdef __cplusplus
extern "C"{
#endif
/*
*/
/*
功能 : 结合WMI和DeviceIoControl获取网卡原生MAC地址和当前MAC地址
入口参数 :
iQueryType 需要获取的网卡类型
0 : 包括USB网卡
1 : 不包括USB网卡
pMacAddress 存储网卡MAC地址
uSize 可存储的最大网卡数目
返回值:
-1 不支持的设备属性值
-2 WMI连接失败
-3 不正确的WQL查询语句
>=0 获取的网卡数目
*/
INT WDK_MacAddress(INT iQueryType, MACADDRESS * pMacAddress, INT iSize);
#ifdef __cplusplus
}
#endif
#endif
实现文件macaddr.cpp
#include <tchar.h>
#include <strsafe.h>
#include <algorithm>
#include "macaddr.h"
#ifdef __cplusplus
extern "C"
{
#endif
#include <ntddndis.h>
#include <setupapi.h>
#include <hidsdi.h>
#ifdef __cplusplus
}
#endif
#pragma comment (lib, "setupapi")
#pragma comment (lib, "hid")
const GUID GUID_QUERYSET[] = {
// 网卡原生MAC地址(包含USB网卡)
{