CComCachedTearOffObject (clase)
Esta clase implementa IUnknown para una interfaz desplazable.
template
<class contained>
class CComCachedTearOffObject : public
IUnknown,
public CComObjectRootEx<contained
::_ThreadModel::ThreadModelNoCS>
contained
La clase desplazable, derivada de CComTearOffObjectBase
y las interfaces que quiera que admita el objeto desplazado.
Nombre | Descripción |
---|---|
CComCachedTearOffObject::CComCachedTearOffObject | Constructor . |
CComCachedTearOffObject::~CComCachedTearOffObject | El destructor . |
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. |
Nombre | Descripción |
---|---|
CComCachedTearOffObject::m_contained | Objeto CComContainedObject derivado de la clase desplazable (la clase contained ). |
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.
CComObjectRootBase
IUnknown
CComCachedTearOffObject
Encabezado: atlcom.h
Incrementa el recuento de referencias del objeto CComCachedTearOffObject
en 1.
STDMETHOD_(ULONG, AddRef)();
Valor que puede ser útil para los diagnósticos y las pruebas.
Constructor .
CComCachedTearOffObject(void* pv);
pv
[in] Puntero al IUnknown
de CComCachedTearOffObject
.
Inicializa el miembro CComContainedObject
, m_contained.
El destructor .
~CComCachedTearOffObject();
Libera todos los recursos asignados y llama a FinalRelease.
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 HRESULT estándar.
Llama a m_contained::FinalRelease
para liberar m_contained
, el objeto CComContainedObject
<contained
>.
void FinalRelease();
Objeto CComContainedObject derivado de la clase desplazable.
CcomContainedObject <contained> m_contained;
contained
[in] La clase desplazable, derivada de CComTearOffObjectBase
y las interfaces que desea que admita el objeto desplazable.
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
.
Recupera un puntero a la interfaz solicitada.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
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 HRESULT estándar.
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
.
Disminuye el recuento de referencias en 1 y, si el recuento de referencias es 0, elimina el objeto CComCachedTearOffObject
.
STDMETHOD_(ULONG, Release)();
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.
CComTearOffObject (clase)
CComObjectRootEx (clase)
Información general sobre la clase