CComClassFactoryAutoThread Class
このクラスを使用すると、IClassFactory インターフェイスが実装され、オブジェクトを複数のアパートメントに作成することができます。
重要
このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。
構文
class CComClassFactoryAutoThread
: public IClassFactory,
public CComObjectRootEx<CComGlobalsThreadModel>
メンバー
パブリック メソッド
名前 | 説明 |
---|---|
CComClassFactoryAutoThread::CreateInstance | 指定した CLSID のオブジェクトを作成します。 |
CComClassFactoryAutoThread::LockServer | メモリ内のクラス ファクトリをロックします。 |
解説
CComClassFactoryAutoThread
は CComClassFactory と似ていますが、オブジェクトを複数のアパートメントに作成できます。 このサポートを利用するには、EXE モジュールを CComAutoThreadModule から派生させます。
通常、ATL オブジェクトは、クラス ファクトリを CComCoClass から派生させて取得します。 このクラスには、CComClassFactory を既定のクラス ファクトリとして宣言する DECLARE_CLASSFACTORY マクロが含まれます。 CComClassFactoryAutoThread
を使用するには、オブジェクトのクラス定義で DECLARE_CLASSFACTORY_AUTO_THREAD マクロを指定します。 次に例を示します。
class ATL_NO_VTABLE CMyAutoClass :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CMyAutoClass, &CLSID_MyAutoClass>,
public IMyAutoClass
{
public:
DECLARE_CLASSFACTORY_AUTO_THREAD()
// Remainder of class declaration omitted.
継承階層
CComObjectRootBase
IClassFactory
CComClassFactoryAutoThread
要件
ヘッダー: atlcom.h
CComClassFactoryAutoThread::CreateInstance
指定した CLSID のオブジェクトを作成し、このオブジェクトへのインターフェイス ポインターを取得します。
STDMETHODIMP CreateInstance(
LPUNKNOWN pUnkOuter,
REFIID riid,
void** ppvObj);
パラメーター
pUnkOuter
[in] オブジェクトを集計の一部として作成中の場合、pUnkOuter は外部の不明な値である必要があります。 それ以外の場合、pUnkOuter は NULL である必要があります。
riid
[入力] 要求された インターフェイスの IID。 pUnkOuter が NULL 以外の場合、riid は IID_IUnknown
である必要があります。
ppvObj
[出力] riid によって識別されるインターフェイス ポインターへのポインター。 オブジェクトがこのインターフェイスをサポートしていない場合、ppvObj は NULL に設定されます。
戻り値
標準の HRESULT 値。
解説
モジュールが CComAutoThreadModule から派生する場合、関連付けられたアパートメント内にあるオブジェクトを作成するスレッドが CreateInstance
によって選択されます。
CComClassFactoryAutoThread::LockServer
_Module::Lock
と _Module::Unlock
をそれぞれ呼び出すことで、モジュールのロック数をインクリメントおよびデクリメントします。
STDMETHODIMP LockServer(BOOL fLock);
パラメーター
fLock
[in] TRUE の場合、ロック数はインクリメントされます。それ以外の場合、ロック数はデクリメントされます。
戻り値
標準の HRESULT 値。
解説
CComClassFactoryAutoThread
を使用する場合、通常 _Module
は、CComAutoThreadModule のグローバル インスタンスを参照します。
LockServer
を呼び出すことで、クライアントによるクラス ファクトリの保持が可能となり、複数のオブジェクトが迅速に作成されます。
関連項目
IClassFactory
CComClassFactory2 クラス
CComClassFactorySingleton クラス
CComObjectRootEx クラス
CComGlobalsThreadModel
クラスの概要