初始化 GUID 变量:如何

Initialise a GUID variable: How?

本文关键字:如何 变量 GUID 初始化      更新时间:2023-10-16

我正在尝试初始化一个 GUID 变量,但我不确定这就是你打算这样做的方式。我特别困惑的是如何在 char 数组中存储最后 12 个十六进制数字(我是否包含"-"字符?

如何定义/初始化 GUID 变量?

bool TVManager::isMonitorDevice(GUID id)
{
    // Class GUID for a Monitor is: {4d36e96e-e325-11ce-bfc1-08002be10318}
    GUID monitorClassGuid;
    char* a                = "bfc1-08002be10318"; // do I store the "-" character?
    monitorClassGuid.Data1 = 0x4d36e96e;
    monitorClassGuid.Data2 = 0xe325;
    monitorClassGuid.Data3 = 0x11ce;
    monitorClassGuid.Data4 = a;
    return (bool(id == monitorClassGuid));
}

Data4成员不是一个指针,它是一个数组。 您需要:

monitorClassGuid.Data4 = { 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 };

使您的示例正常工作。 您可能会发现执行所有初始化以及monitorClassGuid变量的定义更容易:

GUID monitorClassGuid = { 0x4d36e96e, 0xe325, 0x11c3, { 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 } };

这个问题很久以前就被问过了,但也许它对其他人有帮助。

可以使用此代码初始化 GUID:

#include <combaseapi.h>;
GUID guid;
CLSIDFromString(L"{4d36e96e-e325-11ce-bfc1-08002be10318}", &guid);