ClassFactory クラス
IClassFactory
インターフェイスの基本機能を実装します。
構文
template <
typename I0 = Details::Nil,
typename I1 = Details::Nil,
typename I2 = Details::Nil
>
class ClassFactory :
public Details::RuntimeClass<
typename Details::InterfaceListHelper<
IClassFactory,
I0,
I1,
I2,
Details::Nil
>::TypeT,
RuntimeClassFlags<ClassicCom | InhibitWeakReference>,
false
>;
パラメーター
I0
0 番目のインターフェイス。
I1
1 番目のインターフェイス。
I2
2 番目のインターフェイス。
解説
ClassFactory
を利用して、ユーザー定義のファクトリ実装を提供します。
次のプログラミング パターンは、Implements 構造体を使って、クラス ファクトリ上で 3 つを超えるインターフェイスを指定する方法を示しています。
struct MyFactory : ClassFactory<Implements<I1, I2, I3>, I4, I5>
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
ClassFactory::ClassFactory |
パブリック メソッド
名前 | 説明 |
---|---|
ClassFactory::AddRef | 現在の ClassFactory オブジェクトの参照カウントをインクリメントします。 |
ClassFactory::LockServer | 現在の ClassFactory オブジェクトが追跡している基となるオブジェクト数をインクリメントまたはデクリメントします。 |
ClassFactory::QueryInterface | パラメーターで指定したインターフェイスへのポインターを取得します。 |
ClassFactory::Release | 現在の ClassFactory オブジェクトの参照カウントをデクリメントします。 |
継承階層
I0
ChainInterfaces
I0
RuntimeClassBase
ImplementsHelper
DontUseNewUseMake
RuntimeClassFlags
RuntimeClassBaseT
RuntimeClass
ClassFactory
要件
ヘッダー: module.h
名前空間: Microsoft::WRL
ClassFactory::AddRef
現在の ClassFactory
オブジェクトの参照カウントをインクリメントします。
STDMETHOD_(
ULONG,
AddRef
)();
戻り値
成功した場合は S_OK、そうでない場合は失敗を示す HRESULT。
ClassFactory::ClassFactory
WRL_NOTHROW ClassFactory();
ClassFactory::LockServer
現在の ClassFactory
オブジェクトが追跡している基となるオブジェクト数をインクリメントまたはデクリメントします。
STDMETHOD(
LockServer
)(BOOL fLock);
パラメーター
fLock
追跡するオブジェクト数をインクリメントするには true
。 追跡するオブジェクト数をデクリメントするには false
。
戻り値
成功した場合は S_OK、それ以外の場合は E_FAIL。
解説
ClassFactory
を使うと、Module クラスの基になるインスタンス内のオブジェクトを追跡できます。
ClassFactory::QueryInterface
パラメーターで指定したインターフェイスへのポインターを取得します。
STDMETHOD(
QueryInterface
)(REFIID riid, _Deref_out_ void **ppvObject);
パラメーター
riid
インターフェイス ID。
ppvObject
この操作が完了したときの、riid パラメーターで指定されたインターフェイスへのポインター。
戻り値
成功した場合は S_OK、そうでない場合は失敗を示す HRESULT。
ClassFactory::Release
現在の ClassFactory
オブジェクトの参照カウントをデクリメントします。
STDMETHOD_(
ULONG,
Release
)();
戻り値
成功した場合は S_OK、そうでない場合は失敗を示す HRESULT。