CComCachedTearOffObject

template <class contained>
class CComCachedTearOffObject : public IUnknown,
public CComObjectRoot
Ex< contained::_ThreadModel::ThreadModelNoCS >

Parameters

contained Your tear-off class, derived from CComTearOffObjectBase and the interfaces you want your tear-off object to support.

CComCachedTearOffObject implements IUnknown for a tear-off interface. This class differs from CComTearOffObject in that CComCachedTearOffObject has its own IUnknown, separate from the owner object's IUnknown (the owner is the object for which the tear-off is being created). CComCachedTearOffObject maintains its own reference count on its IUnknown and deletes itself once its reference count is 0. Note, however, that querying for any of its tear-off interfaces increments the reference count of the owner object's IUnknown.

If the CComCachedTearOffObject object implementing the tear-off is already instantiated, and the tear-off interface is queried for again, the same CComCachedTearOffObject object is reused. In contrast, if a tear-off interface implemented by a CComTearOffObject is again queried for through the owner object, another CComTearOffObject will be instantiated.

The owner class must implement FinalRelease and call Release on the cached IUnknown for the CComCachedTearOffObject, which will decrement its reference count. This will cause CComCachedTearOffObject's FinalRelease to be called and delete the tear-off.

#include <atlcom.h>

See Also CComTearOffObject, CComObjectRootEx


CComCachedTearOffObject Class Members

Methods
AddRefIncrements the reference count for a CComCachedTearOffObject object.
CComCachedTearOffObjectConstructor.
FinalConstructCalls the m_contained::FinalConstruct (the tear-off class' method).
FinalReleaseCalls the m_contained::FinalRelease (the tear-off class' method).
QueryInterfaceReturns a pointer to the IUnknown of the CComCachedTearOffObject object, or to the requested interface on your tear-off class (the class contained).
ReleaseDecrements the reference count for a CComCachedTearOffObject object and destroys it if the reference count is 0.
Data Members
m_containedA CComContainedObject object derived from your tear-off class (the class contained).

CComCachedTearOffObject Overview


Methods


CComCachedTearOffObject::AddRef

ULONG AddRef( );

Return Value

A value that may be useful for diagnostics and testing.

Remarks

Increments the reference count of the CComCachedTearOffObject object by 1.

CComCachedTearOffObject Overview | Class Members

See Also CComCachedTearOffObject::Release


CComCachedTearOffObject::CComCachedTearOffObject

CComCachedTearOffObject( void* pv );

Parameters

pv [in] Pointer to the IUnknown of the CComCachedTearOffObject.

Remarks

The constructor. Initializes the CComContainedObject member, m_contained.

CComCachedTearOffObject Overview | Class Members

See Also CComTearOffObject


CComCachedTearOffObject::FinalConstruct

HRESULT FinalConstruct( );

Return Value

A standard HRESULT value.

Remarks

Calls m_contained::FinalConstruct to create m_contained, the CComContainedObject<contained> object used to access the interface implemented by your tear-off class.

CComCachedTearOffObject Overview | Class Members

See Also CComCachedTearOffObject::FinalRelease


CComCachedTearOffObject::FinalRelease

void FinalRelease( );

Remarks

Calls m_contained::FinalRelease to free m_contained, the CComContainedObject<contained> object.

CComCachedTearOffObject Overview | Class Members

See Also CComCachedTearOffObject::FinalConstruct


CComCachedTearOffObject::QueryInterface

QueryInterface( REFIID iid , void** ppvObject );

Return Value

A standard HRESULT value.

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.

Remarks

Retrieves an indirect pointer to the requested interface. If the requested interface is IUnknown, returns a pointer to the CComCachedTearOffObject`s own IUnknown and increments the reference count. Otherwise, queries for the interface on your tear-off class using the InternalQueryInterface method inherited from CComObjectRootEx.

CComCachedTearOffObject Overview | Class Members

See Also CComCachedTearOffObject::AddRef, CCOmCachedTearOffObject::Release


CComCachedTearOffObject::Release

ULONG Release( );

Return Value

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

Remarks

Decrements the reference count by 1, and if the reference count is 0, deletes the CComCachedTearOffObject.

CComCachedTearOffObject Overview | Class Members

See Also CComCachedTearOffObject::AddRef


Data Members


CComCachedTearOffObject::m_contained

CComContainedObject<contained> m_contained;

Parameters

contained [in] Your tear-off class, derived from CComTearOffObjectBase and the interfaces you want your tear-off object to support.

Remarks

A CComContainedObject object derived from your tear-off class. The methods m_contained inherits are used to access the tear-off interface in your tear-off class through the cached tear-off object's QueryInterface, FinalConstruct, and FinalRelease.

CComCachedTearOffObject Overview | Class Members

See Also CComTearOffObject