Share via


CComObjectGlobal Class

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at CComObjectGlobal Class.

This class manages a reference count on the module containing your Base object.

Syntax

template<class Base>
class CComObjectGlobal : public Base

Parameters

Base
Your class, derived from CComObjectRoot or CComObjectRootEx, as well as from any other interface you want to support on the object.

Members

Public Constructors

Name Description
CComObjectGlobal::CComObjectGlobal The constructor.
CComObjectGlobal::~CComObjectGlobal The destructor.

Public Methods

Name Description
CComObjectGlobal::AddRef Implements a global AddRef.
CComObjectGlobal::QueryInterface Implements a global QueryInterface.
CComObjectGlobal::Release Implements a global Release.

Public Data Members

Name Description
CComObjectGlobal::m_hResFinalConstruct Contains the HRESULT returned during construction of the CComObjectGlobal object.

Remarks

CComObjectGlobal manages a reference count on the module containing your Base object. CComObjectGlobal ensures your object will not be deleted as long as the module is not released. Your object will only be removed when the reference count on the entire module goes to zero.

For example, using CComObjectGlobal, a class factory can hold a common global object that is shared by all its clients.

Inheritance Hierarchy

Base

CComObjectGlobal

Requirements

Header: atlcom.h

CComObjectGlobal::AddRef

Increments the reference count of the object by 1.

STDMETHOD_(ULONG, AddRef)();

Return Value

A value that may be useful for diagnostics and testing.

Remarks

By default, AddRef calls _Module::Lock, where _Module is the global instance of CComModule or a class derived from it.

CComObjectGlobal::CComObjectGlobal

The constructor. Calls FinalConstruct and then sets m_hResFinalConstruct to the HRESULT returned by FinalConstruct.

CComObjectGlobal(void* = NULL));

Remarks

If you have not derived your base class from CComObjectRoot, you must supply your own FinalConstruct method. The destructor calls FinalRelease.

CComObjectGlobal::~CComObjectGlobal

The destructor.

CComObjectGlobal();

Remarks

Frees all allocated resources and calls FinalRelease.

CComObjectGlobal::m_hResFinalConstruct

Contains the HRESULT from calling FinalConstruct during construction of the CComObjectGlobal object.

HRESULT m_hResFinalConstruct;

CComObjectGlobal::QueryInterface

Retrieves a pointer to the requested interface pointer.

STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);

Parameters

iid
[in] The GUID of the interface being requested.

ppvObject
[out] A pointer to the interface pointer identified by iid, or NULL if the interface is not found.

Return Value

A standard HRESULT value.

Remarks

QueryInterface only handles interfaces in the COM map table.

CComObjectGlobal::Release

Decrements the reference count of the object by 1.

STDMETHOD_(ULONG, Release)();

Return Value

In debug builds, Release returns a value that may be useful for diagnostics and testing. In non-debug builds, Release always returns 0.

Remarks

By default, Release calls _Module::Unlock, where _Module is the global instance of CComModule or a class derived from it.

See Also

CComObjectStack Class
CComAggObject Class
CComObject Class
Class Overview