使用CLSIDFromString将字符串GUID转化成十六进制GUID/UUID
2021-09-06
270
0
Windows的一般会给相同类型的设备接口注册相同的GUID,但GUID有时别人给的是一个字符串,但是在实际使用过程中我们又使用的是GUID类型,其结构定义如下:
typedef struct _GUID {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[ 8 ];
} GUID;
其实微软提供了一相函数来进行从字符串到GUID十六进制类型的转化,这个函数叫CLSIDFromString。
#include <windows.h>
#include <stdio.h>
int main()
{
#define TO_SEARCH_DEVICE_UUID L"{781aee18-7733-4ce4-add0-91f41c67b592}"
GUID AGuid;
CLSIDFromString(TO_SEARCH_DEVICE_UUID, &AGuid);
printf("GUID: %08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%2X%02X \n",
AGuid.Data1,
AGuid.Data2,
AGuid.Data3,
AGuid.Data4[0],
AGuid.Data4[1],
AGuid.Data4[2],
AGuid.Data4[3],
AGuid.Data4[4],
AGuid.Data4[5],
AGuid.Data4[6],
AGuid.Data4[7]
);
return 0;
}
输出为:
GUID: 781AEE18-7733-4CE4-ADD0-91F41C67B592