CComObjectGlobal 类
此类管理包含 Base
对象的模块的引用计数。
语法
template<class Base>
class CComObjectGlobal : public Base
参数
Base
类派生自 CComObjectRoot 或 CComObjectRootEx,以及要支持对象的任何其他接口。
成员
公共构造函数
名称 | 描述 |
---|---|
CComObjectGlobal::CComObjectGlobal | 构造函数。 |
CComObjectGlobal::~CComObjectGlobal | 析构函数。 |
公共方法
名称 | 描述 |
---|---|
CComObjectGlobal::AddRef | 实现全局 AddRef 。 |
CComObjectGlobal::QueryInterface | 实现全局 QueryInterface 。 |
CComObjectGlobal::Release | 实现全局 Release 。 |
公共数据成员
“属性” | 描述 |
---|---|
CComObjectGlobal::m_hResFinalConstruct | 包含在构造 CComObjectGlobal 对象期间返回的 HRESULT。 |
备注
CComObjectGlobal
管理包含 Base
对象的模块的引用计数。 CComObjectGlobal
确保只要未释放模块,就不会删除对象。 仅当整个模块上的引用计数变为零时,才会删除对象。
例如,使用 CComObjectGlobal
时,类工厂可以保存由其所有客户端共享的通用全局对象。
继承层次结构
Base
CComObjectGlobal
要求
标头:atlcom.h
CComObjectGlobal::AddRef
按 1 递增 对象的引用计数。
STDMETHOD_(ULONG, AddRef)();
返回值
可用于诊断或测试的值。
备注
默认情况下,AddRef
调用 _Module::Lock
,其中 _Module
是 CComModule 的全局实例或派生自它的类。
CComObjectGlobal::CComObjectGlobal
构造函数。 调用 FinalConstruct
,然后将 m_hResFinalConstruct 设置为 FinalConstruct
返回的 HRESULT
。
CComObjectGlobal(void* = NULL));
备注
如果尚未从 CComObjectRoot 派生基类,则必须提供自己的 FinalConstruct
方法。 析构函数调用 FinalRelease
。
CComObjectGlobal::~CComObjectGlobal
析构函数。
CComObjectGlobal();
注解
释放所有已分配的资源并调用 FinalRelease。
CComObjectGlobal::m_hResFinalConstruct
包含在构造 CComObjectGlobal
对象期间通过调用 FinalConstruct
返回的 HRESULT。
HRESULT m_hResFinalConstruct;
CComObjectGlobal::QueryInterface
检索指向所请求的接口指针的指针。
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
参数
iid
[in] 要请求的接口的 GUID。
ppvObject
[out] 指向 iid 标识的接口指针的指针;如果未找到接口,则为 NULL。
返回值
标准 HRESULT 值。
注解
QueryInterface
仅处理 COM 映射表中的接口。
CComObjectGlobal::Release
按 1 递减对象的引用计数。
STDMETHOD_(ULONG, Release)();
返回值
在调试生成中,Release
返回可用于诊断或测试的值。 在非调试生成中,Release
始终返回 0。
备注
默认情况下,Release
调用 _Module::Unlock
,其中 _Module
是 CComModule 的全局实例或派生自它的类。