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
を実装し、キャッシュされた 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 が返されます。 デバッグ ビルドでは、診断またはテストに役立つ可能性のある値が返されます。