Classe CComClassFactoryAutoThread
Questa classe implementa l'interfaccia IClassFactory e consente la creazione di oggetti in più appartamenti.
Importante
Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.
Sintassi
class CComClassFactoryAutoThread
: public IClassFactory,
public CComObjectRootEx<CComGlobalsThreadModel>
Membri
Metodi pubblici
Nome | Descrizione |
---|---|
CComClassFactoryAutoThread::CreateInstance | Crea un oggetto del CLSID specificato. |
CComClassFactoryAutoThread::LockServer | Blocca la class factory in memoria. |
Osservazioni:
CComClassFactoryAutoThread
è simile a CComClassFactory, ma consente la creazione di oggetti in più appartamenti. Per sfruttare questo supporto, derivare il modulo EXE da CComAutoThreadModule.
Gli oggetti ATL acquisiscono normalmente una class factory derivando da CComCoClass. Questa classe include la macro DECLARE_CLASSFACTORY, che dichiara CComClassFactory come class factory predefinita. Per usare CComClassFactoryAutoThread
, specificare la macro DECLARE_CLASSFACTORY_AUTO_THREAD nella definizione della classe dell'oggetto. Ad esempio:
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.
Gerarchia di ereditarietà
CComObjectRootBase
IClassFactory
CComClassFactoryAutoThread
Requisiti
Intestazione: atlcom.h
CComClassFactoryAutoThread::CreateInstance
Crea un oggetto del CLSID specificato e recupera un puntatore di interfaccia a questo oggetto.
STDMETHODIMP CreateInstance(
LPUNKNOWN pUnkOuter,
REFIID riid,
void** ppvObj);
Parametri
pUnkOuter
[in] Se l'oggetto viene creato come parte di un'aggregazione, pUnkOuter deve essere l'elemento sconosciuto esterno. In caso contrario, pUnkOuter deve essere NULL.
riid
[in] IID dell'interfaccia richiesta. Se pUnkOuter è diverso da NULL, riid deve essere IID_IUnknown
.
ppvObj
[out] Puntatore al puntatore all'interfaccia identificato da riid. Se l'oggetto non supporta questa interfaccia, ppvObj è impostato su NULL.
Valore restituito
Valore HRESULT standard.
Osservazioni:
Se il modulo deriva da CComAutoThreadModule, CreateInstance
prima di tutto seleziona un thread per creare l'oggetto nell'apartment associato.
CComClassFactoryAutoThread::LockServer
Incrementa e decrementa il conteggio dei blocchi del modulo chiamando _Module::Lock
rispettivamente e _Module::Unlock
.
STDMETHODIMP LockServer(BOOL fLock);
Parametri
gregge
[in] Se TRUE, il conteggio dei blocchi viene incrementato; in caso contrario, il conteggio dei blocchi viene decrementato.
Valore restituito
Valore HRESULT standard.
Osservazioni:
Quando si usa CComClassFactoryAutoThread
, _Module
in genere fa riferimento all'istanza globale di CComAutoThreadModule.
La chiamata LockServer
consente a un client di mantenere una class factory in modo che più oggetti possano essere creati rapidamente.
Vedi anche
IClassFactory
Classe CComClassFactory2
Classe CComClassFactorySingleton
Classe CComObjectRootEx
CComGlobalsThreadModel
Cenni preliminari sulla classe