Classe CComClassFactoryAutoThread

Essa classe implementa a interface IClassFactory e permite que os objetos sejam criados em vários apartments.

Importante

Essa classe e seus membros não podem ser usados em aplicativos que são executados no Windows Runtime.

Sintaxe

class CComClassFactoryAutoThread
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Membros

Métodos públicos

Nome Descrição
CComClassFactoryAutoThread::CreateInstance Cria um objeto da CLSID especificada.
CComClassFactoryAutoThread::LockServer Bloqueia a fábrica de classe na memória.

Comentários

CComClassFactoryAutoThread é semelhante a CComClassFactory, mas permite que os objetos sejam criados em vários apartments. Para aproveitar esse suporte, derive seu módulo EXE de CComAutoThreadModule.

Os objetos ATL normalmente adquirem uma fábrica de classes derivando de CComCoClass. Essa classe inclui a macro DECLARE_CLASSFACTORY, que declara CComClassFactory como a fábrica de classes padrão. Para usar CComClassFactoryAutoThread, especifique a DECLARE_CLASSFACTORY_AUTO_THREAD na definição de classe do objeto. Por exemplo:

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.

Hierarquia de herança

CComObjectRootBase

Ccomobjectrootex

IClassFactory

CComClassFactoryAutoThread

Requisitos

Header: atlcom.h

CComClassFactoryAutoThread::CreateInstance

Cria um objeto da CLSID especificada e recupera um ponteiro de interface para esse objeto.

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

Parâmetros

Punkouter
[in] Se o objeto estiver sendo criado como parte de uma agregação, pUnkOuter deverá ser o desconhecido externo. Caso contrário, pUnkOuter deve ser NULL.

riid
[in] O IID da interface solicitada. Se pUnkOuter for não NULL, riid deverá ser IID_IUnknown.

Ppvobj
[out] Um ponteiro para o ponteiro de interface identificado por riid. Se o objeto não dá suporte a essa interface, ppvObj é definido como NULL.

Valor Retornado

Um valor HRESULT padrão.

Comentários

Se o módulo derivar de CComAutoThreadModule, CreateInstance primeiro selecione um thread para criar o objeto no apartment associado.

CComClassFactoryAutoThread::LockServer

Incrementa e diminui a contagem de bloqueios do módulo chamando _Module::Lock e _Module::Unlock, respectivamente.

STDMETHODIMP LockServer(BOOL fLock);

Parâmetros

Rebanho
[in] Se TRUE, a contagem de bloqueios será incrementada; caso contrário, a contagem de bloqueios será decrementada.

Valor Retornado

Um valor HRESULT padrão.

Comentários

Ao usar CComClassFactoryAutoThread, _Module normalmente se refere à instância global de CComAutoThreadModule.

Chamar LockServer permite que um cliente mantenha uma fábrica de classes para que vários objetos possam ser criados rapidamente.

Consulte também

IClassFactory
Classe CComClassFactory2
Classe CComClassFactorySing ltda
Classe CComObjectRootEx
Ccomglobalsthreadmodel
Visão geral da classe