1、CComObject :为独立激活的COM组件提供服务,功能包涵:
(1)锁服务器。
(2)正常的引用计数。
(3)正常的QueryInterface。
2、CComAggObject :为被聚合激活的COM组件提供服务,功能包涵:
(1)锁服务器。
(2)包容接口实际类。
(3)正常的引用计数。
(4)将调用转发给内部包容对象的QueryInterface。(除了IUnknown请求外)
3、CComContainedObject :为被聚合海派的COM组件提供服务,功能包涵:
(1)将调用转发给外部组件的引用计数。
(2)将调用转发给外部组件的QueryInterface。
4、CComPolyObject :为既会被聚合激活也会被独立激活的COM组件提供服务,功能包涵:
(1)在有外部指针传入的时候,表现行为同CComAggObject。
(2)在没外部指针传入的时候,表现行为同CComObject。
5、CComObjectCached :当组件引用计数为1时,不影响服务器的生命周期,功能包涵:
(1)修改的引用计数,在引用大于1时,才锁住服务器。
(2)正常的QueryInterface。
6、CComObjectNoLock :不锁服务器的组件,功能包涵:
(1)正常的引用计数。(不锁服务器)
(2)正常的QueryInterface。
7、CComObjectGlobal :为全局变量提供服务,功能包涵:
(1)在构造函数中完成通常在CComCreator::CreateInstance中的组件调用。
(2)引用计数变形为锁服务器。
(3)正常的QueryInterface。
8、CComObjectStack :为局部COM组件提供服务,功能包涵:
(1)禁止引用计数。
(2)禁止QueryInterface。
9、CComObjectStackEx :为局部COM组件提供更好的服务,功能包涵:
(1)正常的引用计数。
(2)正常的QueryInterface。
(3)在析构函数中断言(dwRef == 0)。(以此保证当组件释放时不存在对其的引用)