1

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

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

4

2 回答 2

3

Raymond Chen回答

Uuid­From­String

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

CLSID­From­String

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

于 2018-02-26T15:13:16.670 回答
1

我会使用UuidFromString- 文档CLSIDFromString明确指出其目的是将生成的字符串转换StringFromCLSIDCLSID.

即使这两个函数的行为是相同的(我怀疑它可能不是 - 例如,考虑CLSIDFromString可以返回REGDB_E_CLASSNOTREG指示类未注册或REGDB_E_READREGDB指示注册表 I/O 错误),区分aCLSID和你自己的内部GUID对象。

于 2013-02-08T17:37:04.683 回答