#ifndef _LINUX
#include <Rpc.h>
#pragma comment(lib, "Rpcrt4.lib")
#else
#include <uuid/uuid.h>
#endif
string GetUUID()
{
string strUUID;
#ifndef _LINUX
UUID uuid;
::ZeroMemory(&uuid, sizeof(UUID));
::UuidCreate(&uuid);
char* szGUID = 0;
if ( RPC_S_OK == ::UuidToStringA( &uuid, (RPC_CSTR*)&szGUID))
{
strUUID = szGUID;
::RpcStringFreeA((RPC_CSTR*)&szGUID);
}
#else
uuid_t uuid;
uuid_generate(uuid);
struct UUIDFormat
{
unsigned int data1;
unsigned short data2;
unsigned short data3;
unsigned char data4[8];
};
UUIDFormat* uuidFormat = (UUID*)(&uuid);
char buf[48] = {0};
snprintf(buf, sizeof(buf),
"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
uuidFormat->data1, uuidFormat->data2, uuidFormat->data3,
uuidFormat->data4[0], uuidFormat->data4[1],
uuidFormat->data4[2], uuidFormat->data4[3],
uuidFormat->data4[4], uuidFormat->data4[5],
uuidFormat->data4[6], uuidFormat->data4[7]);
strUUID = buf;
#endif
return strUUID;
}