Partilhar via


Classe CComCachedTearOffObject

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 o IUnknown para uma interface de remoção.

Sintaxe

template
<class contained>
class CComCachedTearOffObject : public
    IUnknown,
public CComObjectRootEx<contained
::_ThreadModel::ThreadModelNoCS>

Parâmetros

contido
A sua classe de remoção derivada e CComTearOffObjectBase as interfaces que quer que o seu objeto de remoção suporte.

Membros

Construtores Públicos

Nome Description
CComCachedTearOffObject::CComCachedTearOffObject O construtor.
CComCachedTearOffObject::~CComCachedTearOffObject O destruidor.

Métodos Públicos

Nome Description
CComCachedTearOffObject::AddRef Incrementa a contagem de referência para um CComCachedTearOffObject objeto.
CComCachedTearOffObject::FinalConstruct Chama-se o m_contained::FinalConstruct método da classe de remoção.
CComCachedTearOffObject::FinalRelease Chama-se o m_contained::FinalRelease método da classe de remoção.
CComCachedTearOffObject::QueryInterface Devolve um ponteiro para o IUnknownCComCachedTearOffObject do objeto, ou para a interface solicitada na sua classe de remoção (a classe contained).
CComCachedTearOffObject::Release Diminui a contagem de referência de um CComCachedTearOffObject objeto e destrói-a se a contagem de referência for 0.

Membros de Dados Públicos

Nome Description
CComCachedTearOffObject::m_contained Um CComContainedObject objeto derivado da tua classe de remoção (a classe contained).

Observações

CComCachedTearOffObject implementa IUnknown para uma interface de remoção. Esta classe difere de CComTearOffObject que CComCachedTearOffObject tem o seu próprio IUnknown, separado do objeto IUnknown do proprietário (o proprietário é o objeto para o qual a separação está a ser criada). CComCachedTearOffObject mantém a sua própria contagem de referências no IUnknown seu e apaga-se a si própria assim que a contagem de referências é zero. No entanto, se consultar qualquer uma das suas interfaces de remoção, a contagem de referências do objeto IUnknown proprietário será incrementada.

Se o CComCachedTearOffObject objeto que implementa o tear-off já for instanciado, e a interface de tear-off for novamente consultada, o mesmo CComCachedTearOffObject objeto é reutilizado. Em contraste, se uma interface tear-off implementada por um CComTearOffObject for novamente consultada através do objeto proprietário, outra CComTearOffObject será instanciada.

A classe proprietária deve implementar FinalRelease e invocar Release a cache IUnknown para o CComCachedTearOffObject, o que irá decrementar a sua contagem de referências. Isto fará com CComCachedTearOffObjectque 's FinalRelease sejam chamados e apagados o remoção'.

Hierarquia de herança

CComObjectRootBase

CComObjectRootEx

IUnknown

CComCachedTearOffObject

Requerimentos

Cabeçalho: atlcom.h

CComCachedTearOffObject::AddRef

Incrementa a contagem de referência do CComCachedTearOffObject objeto em 1.

STDMETHOD_(ULONG, AddRef)();

Valor de retorno

Um valor que pode ser útil para diagnóstico e testes.

CComCachedTearOffObject::CComCachedTearOffObject

O construtor.

CComCachedTearOffObject(void* pv);

Parâmetros

PV
[dentro] Apontar para o IUnknown de .CComCachedTearOffObject

Observações

Inicializa o CComContainedObject membro, m_contained.

CComCachedTearOffObject::~CComCachedTearOffObject

O destruidor.

~CComCachedTearOffObject();

Observações

Liberta todos os recursos alocados e chama o FinalRelease.

CComCachedTearOffObject::FinalConstruct

Chamadas para criar , o<CComContainedObjectcontained> objeto usado para aceder à interface implementada pela sua classe de remoção.m_containedm_contained::FinalConstruct

HRESULT FinalConstruct();

Valor de retorno

Um valor HRESULT padrão.

CComCachedTearOffObject::FinalRelease

Apela m_contained::FinalRelease para libertar m_contained, o CComContainedObject<contained> objeto.

void FinalRelease();

CComCachedTearOffObject::m_contained

Um objeto CComContainedObject derivado da tua classe de remoção.

CcomContainedObject <contained> m_contained;

Parâmetros

contido
[dentro] A sua classe de remoção derivada e CComTearOffObjectBase as interfaces que quer que o seu objeto de remoção suporte.

Observações

Os métodos m_contained herdeiros são usados para aceder à interface de remoção na sua classe de remoção através dos objetos QueryInterfacede remoção em cache , FinalConstruct, e FinalRelease.

CComCachedTearOffObject::QueryInterface

Recupera um ponteiro para a interface solicitada.

STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);

Parâmetros

IID
[dentro] O GUID da interface a ser solicitada.

ppvObject
[fora] Um ponteiro para o ponteiro da interface identificado por iid, ou NULL se a interface não for encontrada.

Valor de retorno

Um valor HRESULT padrão.

Observações

Se a interface solicitada for IUnknown, devolve um ponteiro para o CComCachedTearOffObjectseu próprio IUnknown e incrementa a contagem de referência. Caso contrário, as consultas para a interface na sua classe de remoção usando o método InternalQueryInterface herdadas de CComObjectRootEx.

CComCachedTearOffObject::Release

Diminui a contagem de referências por 1 e, se a contagem for 0, elimina o CComCachedTearOffObject objeto.

STDMETHOD_(ULONG, Release)();

Valor de retorno

Em builds que não são de depuração, devolve sempre 0. Em compilações de depuração, devolve um valor que pode ser útil para diagnóstico ou testes.

Consulte também

Classe CComTearOffObject
Classe CComObjectRootEx
Visão geral da classe