Compartilhar via


Classe CComClassFactoryAutoThread

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

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos 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 do CLSID especificado.
CComClassFactoryAutoThread::LockServer Bloqueia a fábrica de classes na memória.

Comentários

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

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 macro DECLARE_CLASSFACTORY_AUTO_THREAD na definição de classe do seu 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

Cabeçalho: atlcom.h

CComClassFactoryAutoThread::CreateInstance

Cria um objeto do CLSID especificado e recupera um ponteiro de interface para esse objeto.

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

Parâmetros

pUnkOuter
[entrada] 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 não for NULL, riid deverá ser IID_IUnknown.

ppvObj
[saída] Um ponteiro para o ponteiro da interface identificado por riid. Se o objeto não der suporte a essa interface, o ppvObj será definido como NULL.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Se o módulo deriva de CComAutoThreadModule, CreateInstance primeiro selecionará um thread para criar o objeto no apartamento associado.

CComClassFactoryAutoThread::LockServer

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

STDMETHODIMP LockServer(BOOL fLock);

Parâmetros

fLock
[entrada] Se TRUE, a contagem de bloqueios será incrementada, caso contrário, a contagem de bloqueios será diminuída.

Valor de retorno

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.

Confira também

IClassFactory
Classe CComClassFactory2
Classe CComClassFactorySingleton
Classe CComObjectRootEx
CComGlobalsThreadModel
Visão geral da aula