CComCachedTearOffObject Class
Essa classe implementa IUnknown para uma interface de desativação.
Sintaxe
template
<class contained>
class CComCachedTearOffObject : public
IUnknown,
public CComObjectRootEx<contained
::_ThreadModel::ThreadModelNoCS>
Parâmetros
contained
Sua classe destacável, derivada de CComTearOffObjectBase
e as interfaces às quais você deseja que o seu objeto destacável dê suporte.
Membros
Construtores públicos
Nome | Descrição |
---|---|
CComCachedTearOffObject::CComCachedTearOffObject | O construtor . |
CComCachedTearOffObject::~CComCachedTearOffObject | O destruidor. |
Métodos públicos
Nome | Descrição |
---|---|
CComCachedTearOffObject::AddRef | Incrementa a contagem de referência de um objeto CComCachedTearOffObject . |
CComCachedTearOffObject::FinalConstruct | Chama o m_contained::FinalConstruct (o método da classe de desativação). |
CComCachedTearOffObject::FinalRelease | Chama o m_contained::FinalRelease (o método da classe de desativação). |
CComCachedTearOffObject::QueryInterface | Retorna um ponteiro para o IUnknown do objeto CComCachedTearOffObject ou para a interface solicitada na classe de desativação (a classe contained ). |
CComCachedTearOffObject::Release | Decrementa a contagem de referência de um objeto CComCachedTearOffObject e a destrói se a contagem de referência é 0. |
Membros de Dados Públicos
Nome | Descrição |
---|---|
CComCachedTearOffObject::m_contained | Um objeto CComContainedObject derivado da classe de desativação (a classe contained ). |
Comentários
CComCachedTearOffObject
implementa IUnknown para uma interface de desativação. Essa classe difere de CComTearOffObject
pois CComCachedTearOffObject
tem sua própria IUnknown
, separada da do objeto proprietário IUnknown
(o proprietário é o objeto para o qual a desativação está sendo criada). CComCachedTearOffObject
mantém sua própria contagem de referência em sua IUnknown
e se exclui uma vez que sua contagem de referência é zero. No entanto, se você consultar qualquer uma de suas interfaces de desativação, a contagem de referência do objeto do proprietário IUnknown
será incrementada.
Se o objeto CComCachedTearOffObject
que implementa a desativação já tiver criado uma instância e a interface de desativação for consultada novamente, o mesmo objeto CComCachedTearOffObject
será reutilizado. Por outro lado, se uma interface de desativação implementada por um CComTearOffObject
for consultada novamente por meio do objeto proprietário, outra CComTearOffObject
criará uma instância.
A classe de proprietário deve implementar FinalRelease
e chamar Release
no cache IUnknown
para o CComCachedTearOffObject
, o que diminuirá sua contagem de referência. Isso fará com FinalRelease
de CComCachedTearOffObject
seja chamado e exclua a desativação.
Hierarquia de herança
CComObjectRootBase
IUnknown
CComCachedTearOffObject
Requisitos
Cabeçalho: atlcom.h
CComCachedTearOffObject::AddRef
Incrementa a contagem de referência do objeto CComCachedTearOffObject
em 1.
STDMETHOD_(ULONG, AddRef)();
Valor de retorno
Um valor que pode ser útil para diagnóstico e teste.
CComCachedTearOffObject::CComCachedTearOffObject
O construtor .
CComCachedTearOffObject(void* pv);
Parâmetros
pv
[in] Ponteiro para o IUnknown
de CComCachedTearOffObject
.
Comentários
Inicializa o membro CComContainedObject
, m_contained.
CComCachedTearOffObject::~CComCachedTearOffObject
O destruidor.
~CComCachedTearOffObject();
Comentários
Libera todos os recursos alocados e chama FinalRelease.
CComCachedTearOffObject::FinalConstruct
Chama m_contained::FinalConstruct
para criar m_contained
, o objeto CComContainedObject
<contained
> usado para acessar a interface implementada pela classe de desativação.
HRESULT FinalConstruct();
Valor de retorno
Um valor HRESULT padrão.
CComCachedTearOffObject::FinalRelease
Chama m_contained::FinalRelease
para liberar m_contained
, o objeto CComContainedObject
<contained
>.
void FinalRelease();
CComCachedTearOffObject::m_contained
Um objeto CComContainedObject derivado de sua classe de desativação.
CcomContainedObject <contained> m_contained;
Parâmetros
contained
[in] Sua classe de desativação derivada de CComTearOffObjectBase
e as interfaces às quais você deseja que o seu objeto de desativação dê suporte.
Comentários
Os métodos m_contained
herdados são usados para acessar a interface de desativação em sua classe de desativação por meio de QueryInterface
do objeto de desativação armazenado em cache, FinalConstruct
e FinalRelease
.
CComCachedTearOffObject::QueryInterface
Recupera um ponteiro para a interface solicitada.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
Parâmetros
iid
[in] O GUID da interface que está sendo solicitado.
ppvObject
[out] Um ponteiro para o ponteiro de interface identificado por iid ou NULL se a interface não for encontrada.
Valor de retorno
Um valor HRESULT padrão.
Comentários
Se a interface solicitada for IUnknown
, retornará um ponteiro para o próprio IUnknown
de CComCachedTearOffObject
e incrementará a contagem de referência. Caso contrário, consulta a interface em sua classe de desativação usando o método InternalQueryInterface herdado de CComObjectRootEx
.
CComCachedTearOffObject::Release
Decrementa a contagem de referência em 1 e, se ela é zero, exclui o objeto CComCachedTearOffObject
.
STDMETHOD_(ULONG, Release)();
Valor de retorno
Em builds que não sejam de depuração, sempre retorna 0. Em builds de depuração, retorna um valor que pode ser útil para diagnóstico ou teste.
Confira também
Classe CComTearOffObject
Classe CComObjectRootEx
Visão geral da aula