CComCachedTearOffObject (clase)

Esta clase implementa IUnknown para una interfaz desplazable.

Sintaxis

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

Parámetros

contained
La clase desplazable, derivada de CComTearOffObjectBase y las interfaces que quiera que admita el objeto desplazado.

Miembros

Constructores públicos

Métodos públicos

Nombre Descripción
CComCachedTearOffObject::AddRef Incrementa el recuento de referencias de un objeto CComCachedTearOffObject.
CComCachedTearOffObject::FinalConstruct Llama al método m_contained::FinalConstruct (el método de la clase desplazable).
CComCachedTearOffObject::FinalRelease Llama al método m_contained::FinalRelease (el método de la clase desplazable).
CComCachedTearOffObject::QueryInterface Devuelve un puntero al IUnknown del objeto CComCachedTearOffObject o a la interfaz solicitada en la clase desplazable (la clase contained).
CComCachedTearOffObject::Release Disminuye el recuento de referencias de un objeto CComCachedTearOffObject y lo destruye si el recuento de referencias es 0.

Miembros de datos públicos

Nombre Descripción
CComCachedTearOffObject::m_contained Objeto CComContainedObject derivado de la clase desplazable (la clase contained).

Comentarios

CComCachedTearOffObject implementa IUnknown para una interfaz desplazable. Esta clase difiere de CComTearOffObject en que CComCachedTearOffObject tiene su propio IUnknown, independiente del del objeto propietario IUnknown (el propietario es el objeto para el que se crea el desplazamiento). CComCachedTearOffObject mantiene su propio recuento de referencias en su objeto IUnknown y elimina a sí mismo una vez que su recuento de referencias es cero. Sin embargo, si consulta alguna de sus interfaces desplazables, se incrementará el recuento de referencias IUnknown del objeto propietario.

Si ya se ha creado una instancia el objeto CComCachedTearOffObject que implementa el desplazamiento y se consulta de nuevo la interfaz ya ha creado una instancia, se reutiliza el mismo objeto CComCachedTearOffObject. Por el contrario, si se vuelve a consultar una interfaz desplazable implementada por un objeto CComTearOffObject a través del objeto propietario, se creará una instancia de otro objeto CComTearOffObject.

La clase propietaria debe implementar FinalRelease y llamar a Release en la memoria caché IUnknown para CComCachedTearOffObject, que disminuirá su recuento de referencias. Esto hará que FinalRelease de CComCachedTearOffObject se llame a y elimine el desplazamiento.

Jerarquía de herencia

CComObjectRootBase

CComObjectRootEx

IUnknown

CComCachedTearOffObject

Requisitos

Encabezado: atlcom.h

CComCachedTearOffObject::AddRef

Incrementa el recuento de referencias del objeto CComCachedTearOffObject en 1.

STDMETHOD_(ULONG, AddRef)();

Valor devuelto

Valor que puede ser útil para los diagnósticos y las pruebas.

CComCachedTearOffObject::CComCachedTearOffObject

Constructor .

CComCachedTearOffObject(void* pv);

Parámetros

pv
[in] Puntero al IUnknown de CComCachedTearOffObject.

Comentarios

Inicializa el miembro CComContainedObject, m_contained.

CComCachedTearOffObject::~CComCachedTearOffObject

El destructor .

~CComCachedTearOffObject();

Comentarios

Libera todos los recursos asignados y llama a FinalRelease.

CComCachedTearOffObject::FinalConstruct

Llama a m_contained::FinalConstruct para crear m_contained, el objeto CComContainedObject<contained> utilizado para acceder a la interfaz implementada por la clase desplazable.

HRESULT FinalConstruct();

Valor devuelto

Valor HRESULT estándar.

CComCachedTearOffObject::FinalRelease

Llama a m_contained::FinalRelease para liberar m_contained, el objeto CComContainedObject<contained>.

void FinalRelease();

CComCachedTearOffObject::m_contained

Objeto CComContainedObject derivado de la clase desplazable.

CcomContainedObject <contained> m_contained;

Parámetros

contained
[in] La clase desplazable, derivada de CComTearOffObjectBase y las interfaces que desea que admita el objeto desplazable.

Comentarios

Los métodos m_contained heredados se usan para acceder a la interfaz desplazable en la clase de desmontaje a través de los objetos desplazables QueryInterface, FinalConstruct y FinalRelease.

CComCachedTearOffObject::QueryInterface

Recupera un puntero a la interfaz solicitada.

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

Parámetros

iid
[in] GUID de la interfaz que se solicita.

ppvObject
[out] Puntero al puntero de interfaz identificado por iid o NULL si la interfaz no se encuentra.

Valor devuelto

Valor HRESULT estándar.

Comentarios

Si la interfaz solicitada es IUnknown, devuelve un puntero al IUnknown propio de CComCachedTearOffObject e incrementa el recuento de referencias. De lo contrario, consulta la interfaz de la clase desplazable mediante el método InternalQueryInterface heredado de CComObjectRootEx.

CComCachedTearOffObject::Release

Disminuye el recuento de referencias en 1 y, si el recuento de referencias es 0, elimina el objeto CComCachedTearOffObject.

STDMETHOD_(ULONG, Release)();

Valor devuelto

En compilaciones que no son de depuración, siempre devuelve 0. En las compilaciones de depuración, devuelve un valor que puede ser útil para los diagnósticos o las pruebas.

Consulte también

CComTearOffObject (clase)
CComObjectRootEx (clase)
Información general sobre la clase