关于IXYCONTAINER_QueryInterface

givenup 2010-01-05 03:21:58
使用IXYCONTAINER_QueryInterface(IXYContainer* pi, AEECLSID id, void** ppi)获得一个widget接口,此时,到底是pi的引用计数增加了,还是*ppi的引用计数增加了?
...全文
487 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxcnfly 2010-01-07
  • 打赏
  • 举报
回复
buiw我是没有做过,但就我知道最终会调用到一个WidgetBase_QueryInterface接口,ppi的引用计数也会增加。
givenup 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sxcnfly 的回复:]
客户不看到也是知道的,这是约定俗成,COM机制就是如此,肯定有释放的地方你跟踪一下就知道了。
[/Quote]
正像com约定俗成的那样,IXYCONTAINER_QueryInterface(IXYContainer* pi, AEECLSID id, void** ppi)的调用,我们会想当然的以为,*ppi的引用计数会增加,但是内部的处理却是增加的pi的引用计数,不明白这样做的目的,楼上的可以讲清楚点吗?
givenup 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sxcnfly 的回复:]
buiw我是没有做过,但就我知道最终会调用到一个WidgetBase_QueryInterface接口,ppi的引用计数也会增加。
[/Quote]
呵呵,看来我还得继续看代码,谢谢了。
givenup 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sxcnfly 的回复:]
因为通过接口查询到的接口会被外面引用当然要加引用计数了,否则container接口被释放,这个查询到的接口不是就over了。
[/Quote]
那么对外面的客户来讲,它能够看到这次的引用计数的增加吗?再有,看高通的源代码示例,你会发现并没有对IContainer引用计数进行减1的操作,这样可以保证接口的彻底释放吗?
sxcnfly 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 givenup 的回复:]
引用 1 楼 strayedbird 的回复:
ppi

这是containerbase.c中对该函数的最终处理,可以看到它增加的是container的引用计数
else if ((id == AEEIID_WIDGET)  || (id == AEEIID_HANDLER))
{
*ppo = &me->widget;
ICONTAINER_AddRef(po);//为什么要增加container 的引用计数呢?
return SUCCESS;
}

[/Quote]
因为通过接口查询到的接口会被外面引用当然要加引用计数了,否则container接口被释放,这个查询到的接口不是就over了。
givenup 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 strayedbird 的回复:]
ppi
[/Quote]
这是containerbase.c中对该函数的最终处理,可以看到它增加的是container的引用计数
else if ((id == AEEIID_WIDGET) || (id == AEEIID_HANDLER))
{
*ppo = &me->widget;
ICONTAINER_AddRef(po);//为什么要增加container 的引用计数呢?
return SUCCESS;
}
sxcnfly 2010-01-06
  • 打赏
  • 举报
回复
客户不看到也是知道的,这是约定俗成,COM机制就是如此,肯定有释放的地方你跟踪一下就知道了。
twoconk 2010-01-05
  • 打赏
  • 举报
回复
貌似 *ppi 和 pi 是一个东西
strayedbird 2010-01-05
  • 打赏
  • 举报
回复
ppi

949

社区成员

发帖
与我相关
我的任务
社区描述
为开发者提供高通丰富的解决方案及全面技术下载内容。本版以AI人工智能、WoS移动笔记本、XR、IoT 物联网、Auto 汽车、生成式AI等核心板块组成,为开发者提供一个便捷及高效的学习交流平台。
人工智能物联网机器学习 企业社区 北京·东城区
社区管理员
  • Qualcomm开发
  • csdnsqst0050
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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