是否可以通过CoMarshalInterThreadInterfaceInStream获得从另外一个线程产生的接口?

wishfly 2008-12-10 03:38:22
通过CoMarshalInterThreadInterfaceInStream可以将接口指针包装传递到另外一个线程。
比如:IA *pIA

问题:是否可以通过CoMarshalInterThreadInterfaceInStream获得从另外一个线程产生的接口
比如:IB **pIB

将**pIB通过CoMarshalInterThreadInterfaceInStream传递给另外一个线程,获得指针后传递回来。


可以吗?

...全文
224 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
e_sharp 2008-12-10
  • 打赏
  • 举报
回复
up
wishfly 2008-12-10
  • 打赏
  • 举报
回复
>>1次列集多次散集的场合建议使用全局接口表

第一次听到这种说法,什么叫“1次列集多次散集”?

能仔细说说吗?
Amuro1987218 2008-12-10
  • 打赏
  • 举报
回复
跨套间COM调用需要列散集。IStream可进程内共享,1次列集多次散集的场合建议使用全局接口表
wishfly 2008-12-10
  • 打赏
  • 举报
回复
也就是:
通常是主进程向线程传递接口。
现在是:线程向主进程返回接口。

可以吗?
wishfly 2008-12-10
  • 打赏
  • 举报
回复
1. 主进程定义接口指针 IA **pIA;
2. 通过CoMarshalInterThreadInterfaceInStream转化为:pIA ---> pIStream
3. 在另外一个线程中通过CoGetInterfaceAndReleaseStreamunmarshal获得 pIStream --> IA **pIA1;
并且对pIA1赋值:
比如:pIA1 = new CA

我的目的就是在主进程中的pIA能够获得线程产生的接口指针pIA1 。

这样做可以吗?




yxz_lp 2008-12-10
  • 打赏
  • 举报
回复
转晕了,CoMarshalInterThreadInterfaceInStream能够在线程间安全的marshal接口,客户可以用 CoGetInterfaceAndReleaseStream unmarshal 出接口,线程间应该可以互相传递。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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