Partilhar via


Classe CComClassFactoryAutoThread

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Esta classe implementa a interface IClassFactory e permite a criação de objetos em vários apartamentos.

Importante

Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.

Sintaxe

class CComClassFactoryAutoThread
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Membros

Métodos Públicos

Nome Description
CComClassFactoryAutoThread::CreateInstance Cria um objeto do CLSID especificado.
CComClassFactoryAutoThread::LockServer Tranca a fábrica da classe em memória.

Observações

CComClassFactoryAutoThread é semelhante ao CComClassFactory, mas permite a criação de objetos em múltiplos apartamentos. Para tirar partido deste suporte, derive o seu módulo EXE a partir do CComAutoThreadModule.

Os objetos ATL normalmente adquirem uma fábrica de classes derivando do CComCoClass. Esta classe inclui o macro DECLARE_CLASSFACTORY, que declara o CComClassFactory como a fábrica de classes por defeito. Para usar CComClassFactoryAutoThread, especifique o macro DECLARE_CLASSFACTORY_AUTO_THREAD na definição da 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

Requerimentos

Cabeçalho: atlcom.h

CComClassFactoryAutoThread::CreateInstance

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

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

Parâmetros

PUnkOuter
[dentro] Se o objeto está a ser criado como parte de um agregado, então o pUnkOuter deve ser o desconhecido exterior. Caso contrário, pUnkOuter tem de ser NULL.

riid
[dentro] O IID da interface solicitada. Se pUnkOuter for non-NULL, riid deve ser IID_IUnknown.

ppvObj
[fora] Um ponteiro para o ponteiro de interface identificado por riid. Se o objeto não suportar esta interface, ppvObj é definido como NULL.

Valor de retorno

Um valor HRESULT padrão.

Observações

Se o seu módulo derivar do CComAutoThreadModule, CreateInstance primeiro seleciona um thread para criar o objeto no apartamento associado.

CComClassFactoryAutoThread::LockServer

Incrementa e diminui a contagem de bloqueios de módulos chamando _Module::Lock e _Module::Unlock, respetivamente.

STDMETHODIMP LockServer(BOOL fLock);

Parâmetros

fLock
[dentro] Se TRUE, a contagem de bloqueios é incrementada; caso contrário, o número de bloqueios é decrescente.

Valor de retorno

Um valor HRESULT padrão.

Observações

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

A chamada LockServer permite que um cliente mantenha uma fábrica de classes para que múltiplos objetos possam ser rapidamente criados.

Consulte também

IClassFactory
CComClassFactory2 Classe
CComClassFactorySingleton Class
Classe CComObjectRootEx
CComGlobalsThreadModel
Visão geral da classe