Compartilhar via


Classe ClassFactory

Implementa a funcionalidade básica da interface IClassFactory.

Sintaxe

template <
    typename I0 = Details::Nil,
    typename I1 = Details::Nil,
    typename I2 = Details::Nil
>
class ClassFactory :
    public Details::RuntimeClass<
        typename Details::InterfaceListHelper<
            IClassFactory,
            I0,
            I1,
            I2,
            Details::Nil
        >::TypeT,
        RuntimeClassFlags<ClassicCom | InhibitWeakReference>,
        false
    >;

Parâmetros

I0
A interface do ordinal zero.

I1
A primeira interface.

I2
A segunda interface.

Comentários

Utilize ClassFactory para fornecer uma implementação de fábrica definida pelo usuário.

O padrão de programação a seguir demonstra como usar a estrutura Implements para especificar mais de três interfaces em uma fábrica de classes.

struct MyFactory : ClassFactory<Implements<I1, I2, I3>, I4, I5>

Membros

Construtores públicos

Nome Descrição
ClassFactory::ClassFactory

Métodos públicos

Nome Descrição
ClassFactory::AddRef Incrementa a contagem de referência para o objeto ClassFactory atual.
ClassFactory::LockServer Incrementa ou diminui o número de objetos subjacentes que são rastreados pelo objeto ClassFactory atual.
ClassFactory::QueryInterface Recupera um ponteiro para a interface especificada por parâmetro.
ClassFactory::Release Diminui a contagem de referência para o objeto ClassFactory atual.

Hierarquia de herança

I0

ChainInterfaces

I0

RuntimeClassBase

ImplementsHelper

DontUseNewUseMake

RuntimeClassFlags

RuntimeClassBaseT

RuntimeClass

ClassFactory

Requisitos

Cabeçalho: module.h

Namespace: Microsoft::WRL

ClassFactory::AddRef

Incrementa a contagem de referência para o objeto ClassFactory atual.

STDMETHOD_(
   ULONG,
   AddRef
)();

Valor de retorno

S_OK se tiver êxito; caso contrário, um HRESULT que descreve a falha.

ClassFactory::ClassFactory

WRL_NOTHROW ClassFactory();

ClassFactory::LockServer

Incrementa ou diminui o número de objetos subjacentes que são rastreados pelo objeto ClassFactory atual.

STDMETHOD(
   LockServer
)(BOOL fLock);

Parâmetros

fLock
true para incrementar o número de objetos rastreados. false para diminuir o número de objetos rastreados.

Valor de retorno

S_OK se bem-sucedido; caso contrário, E_FAIL.

Comentários

ClassFactory mantém o controle de objetos em uma instância subjacente da classe Module.

ClassFactory::QueryInterface

Recupera um ponteiro para a interface especificada por parâmetro.

STDMETHOD(
   QueryInterface
)(REFIID riid, _Deref_out_ void **ppvObject);

Parâmetros

riid
Um ID de interface.

ppvObject
Quando essa operação for concluída, um ponteiro para a interface especificada pelo parâmetro riid.

Valor de retorno

S_OK se tiver êxito; caso contrário, um HRESULT que descreve a falha.

ClassFactory::Release

Diminui a contagem de referência para o objeto ClassFactory atual.

STDMETHOD_(
   ULONG,
   Release
)();

Valor de retorno

S_OK se tiver êxito; caso contrário, um HRESULT que descreve a falha.