8

GUID変数を初期化しようとしていますが、これがどのように行われるのかわかりません。私が特に混乱しているのは、最後の12桁の16進数をchar配列に格納する方法です(「-」文字を含めますか?)

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));
}
4

2 に答える 2

14

メンバーはポインターではなく、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 } };
于 2013-01-27T04:17:47.400 に答える
5

この質問はずっと前に尋ねられました、しかし多分それは他の誰かを助けます。

このコードを使用して、GUIDを初期化できます。

#include <combaseapi.h>;

GUID guid;
CLSIDFromString(L"{4d36e96e-e325-11ce-bfc1-08002be10318}", &guid);
于 2018-12-14T11:54:15.413 に答える