首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >COM:使用指向其实现的接口的指针获取coclass对象的GUID

COM:使用指向其实现的接口的指针获取coclass对象的GUID
EN

Stack Overflow用户
提问于 2012-05-29 21:53:45
回答 1查看 1.3K关注 0票数 2

有一些具体的组件类对象实现的COM接口的指针,是否有可能获得实现此接口(CLSID)的底层对象的GUID?

更新1

更广泛地说,我有一个像SetFont(ICanvasFont* font)这样的函数,我需要一种方法来确定实现ICanvasFont接口的底层对象是否属于某个类(比如MCanvasFont)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-29 21:58:05

此接口指针上的IUnknown::QueryInterface以获取以下接口之一:IPersistIPersistStreamIPersistStreamInit或其他IPersist*接口。如果您幸运地获得了一个,那么GetClassID方法将为您获取CLSID类标识符(备用选项是IProvideClassInfoIProvideClassInfo::GetClassInfo)。

请注意,这种信息并不是必须存在的。接口指针在实现它的类上没有CLSID也是有效的。

UPD。如果主要目标是在所提供的接口上识别您自己的实现(“所提供的ICanvasFont是我自己的MCanvasFont类的实例,还是不同的东西?”),那么最简单但有效的方法是在该类上实现一些额外的私有接口。如果查询成功,则可以识别该实例。如果不发生封送处理,您甚至可以static_cast回到原始的C++指针。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10800595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档