组件被聚合时调用的奇怪问题

xqlu2007 2008-11-13 11:13:30
潘爱民《COM原理与应用》第四章实例:
有两个组件:CB和CA,其中CA被CB聚合
CA实现了两个接口:INondelegationUnknown和ISomeInterface,分别对应了两个接口查询函数:CA::NondelegationQueryInterface(iid,ppv)和CA::QueryInterface(iid,ppv);

客户程序在构造CB对象时调用CB::init()函数,该函数主要语句如下:
  ::CoCreateInstance(CLSID_CompA, pUnknownOuter,CLSCTX_INPROC_SERVER, IID_IUnknown, (void **)& m_pUnknownInner) ;//用于构造CA对象
  result = m_pUnknownInner->QueryInterface(IID_SomeInterface, (void **)&m_pSomeInterface);//用于获得CA对象的IID_SomeInterface接口

问题是:为什么m_pUnknownInner->QueryInterface()没有去调用CA的QueryInterface呢?为什么调用的是CA的NondelegationInterface呢?(这个我是可以确认的,确实是这样,因为我分别在两个函数内加了不同的输出语句!而且如果真的调用CA的QueryInterface,经过分析必然会造成死循环。)
...全文
40 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxglsshui 2008-11-15
  • 打赏
  • 举报
回复
up
vbcrack 2008-11-14
  • 打赏
  • 举报
回复
不会,帮你顶

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧