Compartir a través de


CComClassFactoryAutoThread (clase)

Esta clase implementa la interfaz IClassFactory y permite que se creen objetos en varios apartamentos.

Importante

Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.

Sintaxis

class CComClassFactoryAutoThread
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Miembros

Métodos públicos

Nombre Descripción
CComClassFactoryAutoThread::CreateInstance Crea un objeto del elemento CLSID especificado.
CComClassFactoryAutoThread::LockServer Bloquea el generador de clases en memoria.

Comentarios

CComClassFactoryAutoThread es similar a CComClassFactory, pero permite que se creen objetos en varios apartamentos. Para aprovechar esta compatibilidad, derive el módulo EXE de CComAutoThreadModule.

Normalmente, los objetos ATL adquieren un generador de clases al derivar de CComCoClass. Esta clase incluye la macro DECLARE_CLASSFACTORY, que declara CComClassFactory como generador de clases predeterminado. Para usar CComClassFactoryAutoThread, especifique la macro DECLARE_CLASSFACTORY_AUTO_THREAD en la definición de clase del objeto. Por ejemplo:

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.

Jerarquía de herencia

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactoryAutoThread

Requisitos

Encabezado: atlcom.h

CComClassFactoryAutoThread::CreateInstance

Crea un objeto del CLSID especificado y recupera un puntero de interfaz a este objeto.

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

Parámetros

pUnkOuter
[in] Si el objeto se crea como parte de un agregado, pUnkOuter debe ser el desconocido externo. De lo contrario, pUnkOuter debe ser null.

riid
[in] El IID de la interfaz solicitada. Si pUnkOuter no es null, riid debe ser IID_IUnknown.

ppvObj
[out] Puntero al puntero de interfaz identificado por riid. Si el objeto no admite esta interfaz, ppvObj se establece en NULL.

Valor devuelto

Valor HRESULT estándar.

Comentarios

Si el módulo deriva de CComAutoThreadModule, CreateInstance primero selecciona un subproceso para crear el objeto en el apartamento asociado.

CComClassFactoryAutoThread::LockServer

Incrementa y disminuye el número de bloqueos del módulo llamando a _Module::Lock y _Module::Unlock, respectivamente.

STDMETHODIMP LockServer(BOOL fLock);

Parámetros

fLock
[in] Si es TRUE, se incrementa el recuento de bloqueos; de lo contrario, se reduce el recuento de bloqueos.

Valor devuelto

Valor HRESULT estándar.

Comentarios

Cuando se usa CComClassFactoryAutoThread, _Module normalmente hace referencia a la instancia global de CComAutoThreadModule.

La llamada a LockServer permite que un cliente se mantenga en un generador de clases para que se puedan crear varios objetos rápidamente.

Consulte también

IClassFactory
CComClassFactory2 (clase)
CComClassFactorySingleton (clase)
CComObjectRootEx (clase)
CComGlobalsThreadModel
Información general sobre la clase