COM聚合的实现
来源:互联网 发布:债券销售岗 知乎 编辑:程序博客网 时间:2024/04/28 10:32
聚合指的是COM对象转接客户端对某个接口的请求。
某COM对象B并不实现ISomeInterface接口,但是可以通过调用某个内部COM对象A来支持该接口。意思是指,当客户端调用B所支持的接口IOtherInterface查询ISomeInterface时,直接将对象A的ISomeInterface接口指针传出去。
实现聚合的关键是COM对象在被聚合时的QueryInterface的处理。按照COM规范,通过接口查询到的IUnknown接口必须唯一。所以即便B对象不实现ISomeInterface接口,但是调用该接口查询到的IUnknown接口应当跟通过IOtherInterface查询到的一样。但因为实际上ISomeInterface是内部对象A的接口,所以为了符合规范,必须对A被聚合的情况进行特殊处理。
内部对象可以在外部对象初始化时通过CoCreateInstance函数创建,该函数的声明为:
STDAPI CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter,
DWORD dwClsContext,
REFIID riid,
LPVOID * ppv
);
其中pUnkOuter指针用于指明该组件被聚合,并将外部对象的IUnknown接口指针传进来。这样,在内部对象进行查询的时候,以及AddRef,Release时,可以先判断外部IUnknown指针是否为空,若不为空,就要通过外部IUnknown指针调用QueryInterface,以及AddRef和Release。
- COM聚合的实现
- COM聚合的实现
- com 聚合的实现
- ATL 实现com的聚合
- COM技术内幕中聚合的实现
- <com原理>与<com内幕>的聚合实现部分。
- <com原理>与<com内幕>的聚合实现部分
- COM实现聚合所使用的C++技巧
- 用MFC写的COM如何实现包容或聚合?
- COM原理与应用中关于聚合实现的纪要
- COM实现聚合所使用的C++技巧
- COM对象聚合的原生态实现(非向导)
- 一个使用MFC实现Com聚合的例子
- COM聚合的简单模拟
- COM 的聚合和包容
- Com+编程:聚合的理解
- COM原理与实现之二: 聚合
- COM聚合
- 如何在嵌入式Linux产品中做立体、覆盖产品生命期的调试 (5)
- 根据条件改变cxGrid行与列颜色
- SQL交叉表实例
- net_sf_interfacecpp项目诞生宣言
- COM聚合的实现
- COM聚合的实现
- NAT 配置举例
- 发布一个很COOL的图片验证码程序[含源码]
- (转)ASP.NET 应用程序生命周期概述
- DES加密算法的原理
- DES加密算法的原理
- [推荐]三色变换(JS文件)
- 校园BBS
- Google Gmail 中 右上角loadinging不论滚动条是否滚动时都不动.