Идентификатор класса (GUID) обычно задается с помощью последовательности шестнадцатеричных чисел, разделенных тире, например. {557cf406-1a04-11d3-9a73-0000f81ef32e}
. Это не литерал, который можно использовать для инициализации структуры CLSID.
Я открыл два способа инициализации структуры, но они оба неловкие. Первое не позволяет объявить его const
и должно выполняться во время выполнения, тогда как второе требует обширного переформатирования шестнадцатеричных констант.
CLSID clsid1;
CLSIDFromString(CComBSTR("{557cf406-1a04-11d3-9a73-0000f81ef32e}"), &clsid1);
const CLSID clsid2 = { 0x557cf406, 0x1a04, 0x11d3, { 0x9a,0x73,0x00,0x00,0xf8,0x1e,0xf3,0x2e } };
Я знаю, что Visual Studio может автоматически генерировать его, если у вас есть тип, связанный с UUID, с помощью оператора __uuidof
. Есть ли способ сделать это, если у вас есть только шестнадцатеричная строка?