次の方法で共有


CComCachedTearOffObject クラス

このクラスは、ティアオフ インターフェイスの IUnknown を実装します。

構文

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

パラメーター

contained
CComTearOffObjectBase から派生したティアオフ クラスと、ティアオフ オブジェクトでサポートするインターフェイス。

メンバー

パブリック コンストラクター

名前 説明
CComCachedTearOffObject::CComCachedTearOffObject コンストラクター。
CComCachedTearOffObject::~CComCachedTearOffObject デストラクター。

パブリック メソッド

名前 説明
CComCachedTearOffObject::AddRef CComCachedTearOffObject オブジェクトの参照カウントをインクリメントします。
CComCachedTearOffObject::FinalConstruct m_contained::FinalConstruct (ティアオフ クラスのメソッド) を呼び出します。
CComCachedTearOffObject::FinalRelease m_contained::FinalRelease (ティアオフ クラスのメソッド) を呼び出します。
CComCachedTearOffObject::QueryInterface CComCachedTearOffObject オブジェクトの IUnknown へのポインター、またはティアオフ クラス (クラス contained) の要求されたインターフェイスへのポインターを返します。
CComCachedTearOffObject::Release CComCachedTearOffObject オブジェクトの参照カウントをデクリメントし、参照カウントが 0 の場合はこれを破棄します。

パブリック データ メンバー

名前 説明
CComCachedTearOffObject::m_contained ティアオフ クラス (クラス contained) から派生した CComContainedObject オブジェクト。

解説

CComCachedTearOffObject はティアオフ インターフェイスの IUnknown を実装します。 このクラスは、CComCachedTearOffObject が所有者オブジェクト IUnknown とは別に、独自の IUnknown を持つ点で CComTearOffObject とは異なります (所有者は、ティアオフが作成されるオブジェクトです)。 CComCachedTearOffObject は、その IUnknown に対して独自の参照カウントを保持し、参照カウントが 0 の場合はそれ自体を削除します。 ただし、そのティアオフ インターフェイスのいずれかに対してクエリを実行すると、所有者オブジェクトの IUnknown の参照カウントがインクリメントされます。

ティアオフを実装する CComCachedTearOffObject オブジェクトが既にインスタンス化されていて、ティアオフ インターフェイスのクエリが再び実行されている場合は、同じ CComCachedTearOffObject オブジェクトが再利用されます。 これに対し、CComTearOffObject によって実装されたティアオフ インターフェイスが所有者オブジェクトを介してクエリされた場合、別の CComTearOffObject がインスタンス化されます。

所有者クラスは FinalRelease を実装し、キャッシュされた IUnknownCComCachedTearOffObject に対して Release を呼び出す必要があります。この場合、その参照カウントはデクリメントされます。 これにより、CComCachedTearOffObjectFinalRelease が呼び出され、ティアオフを削除します。

継承階層

CComObjectRootBase

CComObjectRootEx

IUnknown

CComCachedTearOffObject

要件

ヘッダー: atlcom.h

CComCachedTearOffObject::AddRef

CComCachedTearOffObject オブジェクトの参照カウンターを 1 つインクリメントします。

STDMETHOD_(ULONG, AddRef)();

戻り値

診断やテストに役立つ可能性がある値。

CComCachedTearOffObject::CComCachedTearOffObject

コンストラクター。

CComCachedTearOffObject(void* pv);

パラメーター

pv
[入力] CComCachedTearOffObjectIUnknown へのポインター。

解説

CComContainedObject メンバー、m_contained を初期化します。

CComCachedTearOffObject::~CComCachedTearOffObject

デストラクター。

~CComCachedTearOffObject();

解説

割り当て済みのすべてのリソースを解放し、FinalRelease を呼び出します。

CComCachedTearOffObject::FinalConstruct

m_contained::FinalConstruct を呼び出して m_contained を作成します。CComContainedObject<contained> オブジェクトは、ティアオフ クラスによって実装されたインターフェイスにアクセスするために使用されます。

HRESULT FinalConstruct();

戻り値

標準の HRESULT 値。

CComCachedTearOffObject::FinalRelease

m_contained::FinalRelease を呼び出して、m_containedCComContainedObject<contained> オブジェクトを解放します。

void FinalRelease();

CComCachedTearOffObject::m_contained

ティアオフ クラスから派生した CComContainedObject オブジェクト。

CcomContainedObject <contained> m_contained;

パラメーター

contained
[入力] CComTearOffObjectBase から派生したティアオフ クラスと、ティアオフ オブジェクトでサポートするインターフェイス。

解説

メソッド m_contained の継承は、キャッシュされたティアオフ オブジェクトの、QueryInterfaceFinalConstructFinalRelease、を介して、ティアオフ クラスのティアオフ インターフェイスにアクセスするために使用されます。

CComCachedTearOffObject::QueryInterface

要求されたインターフェイスへのポインターを取得します。

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

パラメーター

iid
[入力] 要求されているインターフェイスの GUID。

ppvObject
[出力] iid で識別されるインターフェイス ポインターへのポインター。インターフェイスが見つからない場合は NULL。

戻り値

標準の HRESULT 値。

解説

要求されたインターフェイスが IUnknown である場合、CComCachedTearOffObject 自体の IUnknown へのポインターが返され、参照カウントがインクリメントされます。 それ以外の場合は、CComObjectRootEx から継承された InternalQueryInterface メソッドを使用して、ティアオフ クラスのインターフェイスに対してクエリが実行されます。

CComCachedTearOffObject::Release

参照カウントを 1 つデクリメントし、参照カウントが 0 の場合は CComCachedTearOffObject オブジェクトを削除します。

STDMETHOD_(ULONG, Release)();

戻り値

デバッグなしのビルドでは、常に 0 が返されます。 デバッグ ビルドでは、診断またはテストに役立つ可能性のある値が返されます。

関連項目

CComTearOffObject クラス
CComObjectRootEx クラス
クラスの概要