このクラスは、ティアオフ インターフェイスの 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 を実装し、キャッシュされた IUnknown で CComCachedTearOffObject に対して Release を呼び出す必要があります。この場合、その参照カウントはデクリメントされます。 これにより、CComCachedTearOffObject の FinalRelease が呼び出され、ティアオフを削除します。
継承階層
CComObjectRootBase
IUnknown
CComCachedTearOffObject
要件
ヘッダー: atlcom.h
CComCachedTearOffObject::AddRef
CComCachedTearOffObject オブジェクトの参照カウンターを 1 つインクリメントします。
STDMETHOD_(ULONG, AddRef)();
戻り値
診断やテストに役立つ可能性がある値。
CComCachedTearOffObject::CComCachedTearOffObject
コンストラクター。
CComCachedTearOffObject(void* pv);
パラメーター
pv
[入力] CComCachedTearOffObject の IUnknown へのポインター。
解説
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_contained、CComContainedObject<contained> オブジェクトを解放します。
void FinalRelease();
CComCachedTearOffObject::m_contained
ティアオフ クラスから派生した CComContainedObject オブジェクト。
CcomContainedObject <contained> m_contained;
パラメーター
contained
[入力] CComTearOffObjectBase から派生したティアオフ クラスと、ティアオフ オブジェクトでサポートするインターフェイス。
解説
メソッド m_contained の継承は、キャッシュされたティアオフ オブジェクトの、QueryInterface、FinalConstruct、FinalRelease、を介して、ティアオフ クラスのティアオフ インターフェイスにアクセスするために使用されます。
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 が返されます。 デバッグ ビルドでは、診断またはテストに役立つ可能性のある値が返されます。