Chinaunix首页 | 论坛 | 博客
  • 博客访问: 381399
  • 博文数量: 715
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:46
文章分类

全部博文(715)

文章存档

2011年(1)

2008年(714)

我的朋友

分类:

2008-10-13 16:31:25

     ATL提供了一种分层实现IUnknown的方法,CComXXXThreadModel类表示的最上层,为存放在STA和MTA中的对象所要求的同步提供了“辅助函数”®1和“类型定义”®2。第二层是CComObjectRootEx,他利用线程模型类来支持恰好的“线程安全”的AddRef和Release实现以及对象级的锁定,他的基类是CComObjectRootBase。在“我们的类”®3中使用“相关宏”®4建立了一个接口映射表。CComObjectRootBase利用这个接口映射表建立了一个表驱动的QueryInterface实现。最后一层由CComObject或者其他类似的类®5提供,他们根据对象的生命周期和实体身份的要求提供QI、AddRef、Release的实现。
    为了允许每个类都可以定义自己的生命周期和实体身份,每个类定义自己的_CreatorClass®6来定义适当的创建者。


-----------------------------------------------------------------------------------------------------------------------
名词解释:
®1、指Increment、Decrement两个函数的定义。
®2、指CComXXXThreadModel定义中的几个typedef。
®3、指从CComObjectRootEx和任意数量的接口派生,并且提供接口成员函数的实现(不包括IUnknown的几个虚函数实现)的类。
®4、类似这样:
BEGIN_COM_MAP(Cxx)
 COM_INTERFACE_ENTRY(Ixx)
END_COM_MAP()
这几个宏建立了接口映射表。
®5、这些类主要根据生命周期和实体身份提供IUnknown接口的虚函数。
®6、我们的类从一个CComCoClass派生,在CComCoClass类中,typedef了创建者的类型定义。如DECLARE_AGGREGATABLE(T)
posted on 2006-05-02 23:36 莫问春秋 阅读(811)   

--------------------next---------------------

阅读(259) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~