Clase CComAggObject
Esta clase implementa la interfaz de IUnknown en un objeto agregado. Por definición, un objeto agregado se encuentra dentro de un objeto externo. La clase CComAggObject
es similar a la clase CComObject, salvo que expone una interfaz a la que se pueden acceder directamente clientes externos.
Sintaxis
template<class contained>
class CComAggObject : public IUnknown,
public CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>
Parámetros
contained
Clase, derivada de CComObjectRoot o CComObjectRootEx, así como de cualquier otra interfaz que desee admitir en el objeto.
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CComAggObject::CComAggObject | Constructor . |
CComAggObject::~CComAggObject | El destructor . |
Métodos públicos
Nombre | Descripción |
---|---|
CComAggObject::AddRef | Incrementa el números de referencias del objeto agregado. |
CComAggObject::CreateInstance | Esta función estática permite crear un nuevo objeto CComAggObject contained ><sin la sobrecarga de CoCreateInstance. |
CComAggObject::FinalConstruct | Realiza la inicialización final de m_contained . |
CComAggObject::FinalRelease | Realiza la destrucción final de m_contained . |
CComAggObject::QueryInterface | Recupera un puntero a la interfaz solicitada. |
CComAggObject::Release | Reduce el números de referencias del objeto agregado. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CComAggObject::m_contained | Delega las llamadas de IUnknown al desconocido externo. |
Comentarios
CComAggObject
implementa IUnknown para un objeto agregado. CComAggObject
tiene su propia interfaz IUnknown
, que es independiente de la interfaz IUnknown
del objeto externo y mantiene su propio número de referencias.
Para obtener más información sobre la agregación, vea el artículo Aspectos básicos de los objetos COM ATL.
Jerarquía de herencia
CComObjectRootBase
IUnknown
CComAggObject
Requisitos
Encabezado: atlcom.h
CComAggObject::AddRef
Incrementa el números de referencias del objeto agregado.
STDMETHOD_(ULONG, AddRef)();
Valor devuelto
Valor que puede ser útil para los diagnósticos o las pruebas.
CComAggObject::CComAggObject
Constructor .
CComAggObject(void* pv);
Parámetros
pv
[in] El desconocido exterior.
Comentarios
Inicializa el miembro CComContainedObject
, m_contained e incrementa el número de bloqueos del módulo.
El destructor disminuye el recuento de bloqueos del módulo.
CComAggObject::~CComAggObject
El destructor .
~CComAggObject();
Comentarios
Libera todos los recursos asignados, llama a FinalRelease y disminuye el número de bloqueos del módulo.
CComAggObject::CreateInstance
Esta función estática permite crear un nuevo objeto CComAggObjectcontained
>< sin la sobrecarga de CoCreateInstance.
static HRESULT WINAPI CreateInstance(
LPUNKNOWN pUnkOuter,
CComAggObject<contained>** pp);
Parámetros
pp
[out] Puntero a un puntero incluido en<CComAggObject>. Si CreateInstance
no se realiza correctamente, pp se establece en NULL.
Valor devuelto
Valor HRESULT estándar.
Comentarios
El objeto devuelto tiene un recuento de referencias de cero, por lo que se llama inmediatamente a AddRef
y, después, se usa Release
para liberar la referencia en el puntero de objeto cuando haya terminado.
Si no necesita acceso directo al objeto, pero desea crear un nuevo objeto sin la sobrecarga de CoCreateInstance
, use CComCoClass::CreateInstance en su lugar.
CComAggObject::FinalConstruct
Módulo al que se llama durante las fases finales de la construcción de objetos, realiza cualquier inicialización final en el miembro m_contained.
HRESULT FinalConstruct();
Valor devuelto
Valor HRESULT estándar.
CComAggObject::FinalRelease
Método al que se llama durante la destrucción de objetos, libera el miembro m_contained.
void FinalRelease();
CComAggObject::m_contained
Objeto CComContainedObject derivado de su clase.
CComContainedObject<contained> m_contained;
Parámetros
contained
[in] Sa clase, derivada de CComObjectRoot o CComObjectRootEx, así como de cualquier otra interfaz que desee admitir en el objeto.
Comentarios
Todas las llamadas de IUnknown
a través de m_contained
se delegan al desconocido externo.
CComAggObject::QueryInterface
Recupera un puntero a la interfaz solicitada.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);
Parámetros
iid
[entrada] Identificador de la interfaz solicitada.
ppvObject
[out] Puntero al puntero de interfaz identificado por iid. Si el objeto no admite esta interfaz, ppvObject se establece como null.
pp
[out] Puntero al puntero de interfaz identificado por el tipo Q
. Si el objeto no admite esta interfaz, pp se establece como NULL.
Valor devuelto
Valor HRESULT estándar.
Comentarios
Si la interfaz solicitada es IUnknown
, QueryInterface
devuelve un puntero al propio IUnknown
del objeto agregado e incrementa el recuento de referencias. De lo contrario, este método consulta la interfaz a través del miembro CComContainedObject
, m_contained.
CComAggObject::Release
Reduce el números de referencias del objeto agregado.
STDMETHOD_(ULONG, Release)();
Valor devuelto
En las compilaciones de depuración, Release
devuelve un valor que puede ser útil para los diagnósticos o las pruebas. En compilaciones que no son de depuración, Release
siempre devuelve 0.
Consulte también
CComObject (clase)
CComPolyObject (clase)
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Información general sobre la clase