共用方式為


CComClassFactoryAutoThread 類別

這個類別會實作 IClassFactory 介面,並允許在多個 Apartment 中建立物件。

重要

這個類別及其成員不能用於在Windows 執行階段中執行的應用程式。

語法

class CComClassFactoryAutoThread
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

成員

公用方法

名稱 描述
CComClassFactoryAutoThread::CreateInstance 建立指定 CLSID 的物件。
CComClassFactoryAutoThread::LockServer 鎖定記憶體中的類別處理站。

備註

CComClassFactoryAutoThread 類似于 CComClassFactory ,但允許在多個 Apartment 中建立物件。 若要利用這項支援,請從 CComAutoThreadModule 衍生 EXE 模組。

ATL 物件通常藉由衍生自 CComCoClass 來取得類別處理站。 這個類別包含宏 DECLARE_CLASSFACTORY ,會將 CComClassFactory 宣告 為預設類別處理站。 若要使用 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
[in]所要求介面的 IID。 如果 pUnkOuter 不是 Null,riid 必須是 IID_IUnknown

ppvObj
[out]riid 識別之介面指標的指標。 如果物件不支援這個介面, ppvObj 會設定為 Null。

傳回值

標準 HRESULT 值。

備註

如果您的模組衍生自 CComAutoThreadModule CreateInstance 請先選取執行緒以在相關聯的 Apartment 中建立物件。

CComClassFactoryAutoThread::LockServer

藉由分別呼叫 _Module::Lock_Module::Unlock 來遞增和遞減模組鎖定計數。

STDMETHODIMP LockServer(BOOL fLock);

參數

羊群
[in]如果為 TRUE,則會遞增鎖定計數;否則,鎖定計數會遞減。

傳回值

標準 HRESULT 值。

備註

使用 CComClassFactoryAutoThread 時, _Module 通常是指 CComAutoThreadModule 全域實例。

呼叫 LockServer 可讓用戶端保留至類別處理站,以便快速建立多個物件。

另請參閱

IClassFactory
CComClassFactory2 類別
CComClassFactorySingleton 類別
CComObjectRootEx 類別
CComGlobalsThreadModel
類別概觀