次の方法で共有


CComClassFactoryAutoThread Class

このクラスを使用すると、IClassFactory インターフェイスが実装され、オブジェクトを複数のアパートメントに作成することができます。

重要

このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。

構文

class CComClassFactoryAutoThread
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

メンバー

パブリック メソッド

名前 説明
CComClassFactoryAutoThread::CreateInstance 指定した CLSID のオブジェクトを作成します。
CComClassFactoryAutoThread::LockServer メモリ内のクラス ファクトリをロックします。

解説

CComClassFactoryAutoThreadCComClassFactory と似ていますが、オブジェクトを複数のアパートメントに作成できます。 このサポートを利用するには、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

CComObjectRootEx

IClassFactory

CComClassFactoryAutoThread

要件

ヘッダー: atlcom.h

CComClassFactoryAutoThread::CreateInstance

指定した CLSID のオブジェクトを作成し、このオブジェクトへのインターフェイス ポインターを取得します。

STDMETHODIMP CreateInstance(
    LPUNKNOWN pUnkOuter,
    REFIID riid,
    void** ppvObj);

パラメーター

pUnkOuter
[in] オブジェクトを集計の一部として作成中の場合、pUnkOuter は外部の不明な値である必要があります。 それ以外の場合、pUnkOuter は NULL である必要があります。

riid
[入力] 要求された インターフェイスの IID。 pUnkOuter が NULL 以外の場合、riidIID_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
クラスの概要