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
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
類別概觀