Condividi tramite


Classe CComCachedTearOffObject

Questa classe implementa IUnknown per un'interfaccia di strappo.

Sintassi

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

Parametri

contenuto
La classe di strappo, derivata da CComTearOffObjectBase e le interfacce da cui si vuole supportare l'oggetto tear-off.

Membri

Costruttori pubblici

Nome Descrizione
CComCachedTearOffObject::CComCachedTearOffObject Costruttore.
CComCachedTearOffObject::~CComCachedTearOffObject Distruttore.

Metodi pubblici

Nome Descrizione
CComCachedTearOffObject::AddRef Incrementa il conteggio dei riferimenti per un CComCachedTearOffObject oggetto .
CComCachedTearOffObject::FinalConstruct Chiama ( m_contained::FinalConstruct il metodo della classe di strappo).
CComCachedTearOffObject::FinalRelease Chiama ( m_contained::FinalRelease il metodo della classe di strappo).
CComCachedTearOffObject::QueryInterface Restituisce un puntatore all'oggetto IUnknown dell'oggetto CComCachedTearOffObject o all'interfaccia richiesta nella classe tear-off (la classe contained).
CComCachedTearOffObject::Release Decrementa il conteggio dei riferimenti per un CComCachedTearOffObject oggetto e lo elimina se il conteggio dei riferimenti è 0.

Membri dati pubblici

Nome Descrizione
CComCachedTearOffObject::m_contained Oggetto CComContainedObject derivato dalla classe tear-off (la classe contained).

Osservazioni:

CComCachedTearOffObject implementa IUnknown per un'interfaccia di strappo. Questa classe differisce da CComTearOffObject in quanto CComCachedTearOffObject dispone di un proprio IUnknownoggetto , separato dal proprietario dell'oggetto IUnknown (il proprietario è l'oggetto per il quale viene creata la disinstallazione). CComCachedTearOffObject mantiene il proprio conteggio dei riferimenti e IUnknown lo elimina una volta che il conteggio dei riferimenti è zero. Tuttavia, se si esegue una query per una delle relative interfacce di strappo, il conteggio dei riferimenti dell'oggetto IUnknown proprietario verrà incrementato.

Se l'oggetto CComCachedTearOffObject che implementa l'operazione di disinstallazione è già stata creata un'istanza e viene nuovamente eseguita una query sull'interfaccia di disinstallazione, lo stesso CComCachedTearOffObject oggetto viene riutilizzato. Al contrario, se un'interfaccia di disinstallazione implementata da un CComTearOffObject oggetto viene nuovamente sottoposta a query tramite l'oggetto proprietario, verrà creata un'altra CComTearOffObject istanza.

La classe owner deve implementare FinalRelease e chiamare Release sulla cache IUnknown per CComCachedTearOffObject, che decrementerà il conteggio dei riferimenti. Questo causerà CComCachedTearOffObjectla chiamata e l'eliminazione FinalRelease della rimozione.

Gerarchia di ereditarietà

CComObjectRootBase

CComObjectRootEx

IUnknown

CComCachedTearOffObject

Requisiti

Intestazione: atlcom.h

CComCachedTearOffObject::AddRef

Incrementa il numero di riferimenti dell'oggetto CComCachedTearOffObject di 1.

STDMETHOD_(ULONG, AddRef)();

Valore restituito

Valore che può essere utile per la diagnostica e il test.

CComCachedTearOffObject::CComCachedTearOffObject

Costruttore.

CComCachedTearOffObject(void* pv);

Parametri

Pv
[in] Puntatore all'oggetto IUnknown dell'oggetto CComCachedTearOffObject.

Osservazioni:

Inizializza il CComContainedObject membro m_contained.

CComCachedTearOffObject::~CComCachedTearOffObject

Distruttore.

~CComCachedTearOffObject();

Osservazioni:

Libera tutte le risorse allocate e chiama FinalRelease.

CComCachedTearOffObject::FinalConstruct

Chiama m_contained::FinalConstruct per creare m_contained, l'oggettocontainedCComContainedObject<> usato per accedere all'interfaccia implementata dalla classe di strappo.

HRESULT FinalConstruct();

Valore restituito

Valore HRESULT standard.

CComCachedTearOffObject::FinalRelease

Chiama per liberare , l'oggetto CComContainedObjectcontained<> .m_containedm_contained::FinalRelease

void FinalRelease();

CComCachedTearOffObject::m_contained

Oggetto CComContainedObject derivato dalla classe tear-off.

CcomContainedObject <contained> m_contained;

Parametri

contenuto
[in] La classe di strappo, derivata da CComTearOffObjectBase e le interfacce da cui si vuole supportare l'oggetto tear-off.

Osservazioni:

I metodi m_contained ereditano vengono usati per accedere all'interfaccia di strappo nella classe di disinstallazione tramite l'oggetto di disinstallazione memorizzato nella cache , QueryInterfaceFinalConstructe FinalRelease.

CComCachedTearOffObject::QueryInterface

Recupera un puntatore all'interfaccia richiesta.

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

Parametri

iid
[in] GUID dell'interfaccia richiesta.

ppvObject
[out] Puntatore al puntatore dell'interfaccia identificato da iid o NULL se l'interfaccia non viene trovata.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Se l'interfaccia richiesta è IUnknown, restituisce un puntatore al CComCachedTearOffObjectproprio IUnknown e incrementa il conteggio dei riferimenti. In caso contrario, esegue una query per l'interfaccia nella classe tear-off usando il metodo InternalQueryInterface ereditato da CComObjectRootEx.

CComCachedTearOffObject::Release

Decrementa il conteggio dei riferimenti di 1 e, se il conteggio dei riferimenti è 0, elimina l'oggetto CComCachedTearOffObject .

STDMETHOD_(ULONG, Release)();

Valore restituito

Nelle compilazioni non di debug restituisce sempre 0. Nelle compilazioni di debug restituisce un valore che può essere utile per la diagnostica o il test.

Vedi anche

Classe CComTearOffObject
Classe CComObjectRootEx
Cenni preliminari sulla classe