在Windows中,UuidFromString和CLSIDFromString之间有区别吗?

时间:2013-02-08 17:17:06

标签: c++ windows guid uuid clsid

我只想仔细检查哪一个正确用于内部生成的与COM类无关的GUID。

我怀疑它是UuidFromString,但我一直看到使用CLSIDFromString的代码。我有一个模糊的回忆,CLSIDFromString可能会枚举注册表中列出的COM类,但我不确定这是否正确。

2 个答案:

答案 0 :(得分:1)

我会使用UuidFromString - CLSIDFromString的文档明确声明其目的是将StringFromCLSID生成的字符串转换回CLSID

即使这两个函数的行为是相同的(我怀疑它可能不是 - 例如,考虑CLSIDFromString可以返回REGDB_E_CLASSNOTREG表示该类未注册或{{ 1}}表示注册表I / O错误)区分REGDB_E_READREGDB和您自己的内部CLSID对象是一种很好的做法。

答案 1 :(得分:1)

Raymond Chen answers this

Uuid­From­String

  

让我们从UuidFromString开始。它采用基本形式的字符串   没有花括号。作为一种特殊情况,如果传递NULL而不是a   有效的字符串指针,该函数仍然成功并设置结果   到GUID_NULL。

CLSID­From­String

  

CLSIDFromString稍微复杂一点。此外   它接受一个括号括起来的字符串(被视为GUID)   也接受ProgId。在ProgId的情况下,它返回CLSID   与该ProgId相关联。