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