В Windows есть ли разница между UuidFromString и CLSIDFromString?

Я просто хотел бы еще раз проверить, какой из них правильно использовать для внутренних сгенерированных GUID, которые не имеют отношения к COM-классам.

Я подозреваю, что это UuidFromString, но я продолжаю видеть код, который использует CLSIDFromString. У меня есть смутное воспоминание, что CLSIDFromString может перечислять COM-классы, перечисленные в реестре, но я не уверен, что это правильно.

0

Решение

я хотел бы использовать UuidFromString — документация для CLSIDFromString прямо заявляет, что его целью является преобразование строк, сгенерированных StringFromCLSID обратно в CLSID,

Даже если поведение этих двух функций идентично (и я подозреваю, что это может быть не так — рассмотрим, например, что CLSIDFromString может вернуться REGDB_E_CLASSNOTREG указав, что класс не зарегистрирован или REGDB_E_READREGDB что указывает на ошибку ввода / вывода в реестре) рекомендуется различать CLSID и ваш собственный внутренний GUID объекты.

1

Другие решения

Рэймонд Чен отвечает на это:

Uuid­From­String:

Давайте начнем с UuidFromString. Это берет строку в базовой форме
без фигурных скобок. В особом случае, если вы передаете NULL вместо
действительный указатель на строку, функция все еще успешно и устанавливает результат
GUID_NULL.

CLSID­From­String:

Чуть более сложным является CLSIDFromString. В дополнение к
принимая строку в скобках (которая рассматривается как GUID), она
также принимает ProgId. В случае ProgId возвращает CLSID
связанный с этим ProgId.

1

По вопросам рекламы [email protected]