最近看了一丢丢 windows核心编程,里面提到建议使用GUID的字符串形式作为对象名称使用,来确保
命名的唯一性。
于是查了查GUID:全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个4位十六进制数。
具体:
typedef struct _GUID {
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
} GUID;这是MSDN里的,然后在我的电脑里的定义是
typedef struct _GUID {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID;用起来
#include <stdio.h> #include <objbase.h>
#define GUID_LEN 64
int main()
{
char buffer[GUID_LEN] = { 0 };
GUID guid;
if (CoCreateGuid(&guid))
{
fprintf(stderr, "create guid error\n");
return -1;
}
sprintf_s(buffer, sizeof(buffer),
"%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X",
guid.Data1, guid.Data2, guid.Data3,
guid.Data4[0], guid.Data4[1], guid.Data4[2],
guid.Data4[3], guid.Data4[4], guid.Data4[5],
guid.Data4[6], guid.Data4[7]);
printf("guid: %s\n", buffer);
return 0;
}其中,%08X的意思是,%X表示以十六进制输出;08表示不足8位,前面以0填充,超过8位的话,没有影响。
本文介绍了GUID(全局唯一标识符)的概念及其在Windows编程中的应用。GUID是一种128位长的数字标识符,用于确保跨网络或多计算机系统的唯一性。文章通过一个C语言示例展示了如何生成GUID并将其转换为字符串形式。
8323

被折叠的 条评论
为什么被折叠?



