Compartir a través de


CComClassFactory (clase)

Esta clase implementa la interfaz IClassFactory2.

Sintaxis

class CComClassFactory
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Miembros

Métodos públicos

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

Comentarios

CComClassFactory implementa la interfaz IClassFactory, que contiene métodos para crear un objeto de un CLSID determinado, así como bloquear el generador de clases en memoria para permitir que se creen nuevos objetos más rápidamente. IClassFactory debe implementarse para cada clase que registre en el Registro del sistema y a la que asigne un CLSID.

Normalmente, los objetos ATL adquieren un generador de clases al derivar de CComCoClass. Esta clase incluye la macro DECLARE_CLASSFACTORY, que declara que CComClassFactory es el generador de clases predeterminado. Para invalidar este valor predeterminado, especifique una de las macros DECLARE_CLASSFACTORYXXX en la definición de clase. Por ejemplo, la macro DECLARE_CLASSFACTORY_EX usa la clase especificada para el generador de clases:

class ATL_NO_VTABLE CMyCustomClass :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMyCustomClass, &CLSID_MyCustomClass>,
   public IDispatchImpl<IMyCustomClass, &IID_IMyCustomClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
   DECLARE_CLASSFACTORY_EX(CMyClassFactory)

   // Remainder of class declaration omitted.

La definición de clase anterior especifica que CMyClassFactory se usará como generador de clases predeterminado del objeto. CMyClassFactory debe derivar de CComClassFactory e invalidar CreateInstance.

ATL proporciona otras tres macros que declaran un generador de clases:

Requisitos

Encabezado: atlcom.h

CComClassFactory::CreateInstance

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

STDMETHOD(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.

CComClassFactory::LockServer

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

STDMETHOD(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

_Module hace referencia a la instancia global de CComModule o a una clase derivada de ella.

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

Consulte también

CComObjectRootEx (clase)
CComGlobalsThreadModel
Información general sobre la clase