Partilhar via


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

CComObjectRootEx

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