Share via


CComAggObject-klasse

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Deze klasse implementeert de IUnknown-interface voor een geaggregeerd object. Per definitie bevindt een geaggregeerd object zich in een buitenste object. De CComAggObject klasse is vergelijkbaar met de CComObject-klasse, behalve dat deze een interface beschikbaar maakt die rechtstreeks toegankelijk is voor externe clients.

Syntaxis

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

Parameterwaarden

ingesloten
Uw klasse, afgeleid van CComObjectRoot of CComObjectRootEx, evenals van andere interfaces die u voor het object wilt ondersteunen.

Leden

Openbare constructors

Naam Description
CComAggObject::CComAggObject De constructor.
CComAggObject::~CComAggObject De destructor.

Openbare methoden

Naam Description
CComAggObject::AddRef Hiermee wordt het aantal verwijzingen voor het geaggregeerde object verhoogd.
CComAggObject::CreateInstance Met deze statische functie kunt u een nieuw CComAggObject-object<contained> maken zonder de overhead van CoCreateInstance.
CComAggObject::FinalConstruct Voert de laatste initialisatie van m_contained.
CComAggObject::FinalRelease Voert definitieve vernietiging van m_contained.
CComAggObject::QueryInterface Hiermee wordt een aanwijzer naar de aangevraagde interface opgehaald.
CComAggObject::Release Hiermee wordt het aantal verwijzingen voor het geaggregeerde object afgetrokken.

Publieke dataleden

Naam Description
CComAggObject::m_contained Gedelegeerden IUnknown aanroepen naar de buitenste onbekende.

Opmerkingen

CComAggObject implementeert IUnknown voor een geaggregeerd object. CComAggObject heeft een eigen IUnknown interface, gescheiden van de interface van IUnknown het buitenste object en onderhoudt zijn eigen referentieaantal.

Zie het artikel Basisprincipes van ATL COM-objecten voor meer informatie over aggregatie.

Overnamehiërarchie

CComObjectRootBase

CComObjectRootEx

IUnknown

CComAggObject

Requirements

Koptekst: atlcom.h

CComAggObject::AddRef

Hiermee wordt het aantal verwijzingen voor het geaggregeerde object verhoogd.

STDMETHOD_(ULONG, AddRef)();

Retourwaarde

Een waarde die nuttig kan zijn voor diagnostische gegevens of tests.

CComAggObject::CComAggObject

De constructor.

CComAggObject(void* pv);

Parameterwaarden

Pv
[in] Het buitenste onbekende.

Opmerkingen

Initialiseert het CComContainedObject lid, m_contained en wordt het aantal modulevergrendelingen verhoogd.

Destructor degradeert het aantal modulevergrendelingen.

CComAggObject::~CComAggObject

De destructor.

~CComAggObject();

Opmerkingen

Hiermee worden alle toegewezen resources vrijgemaakt, FinalRelease aanroepen en wordt het aantal modulevergrendelingen afgetrokken.

CComAggObject::CreateInstance

Met deze statische functie kunt u een nieuw CComAggObject-object<contained> maken zonder de overhead van CoCreateInstance.

static HRESULT WINAPI CreateInstance(
    LPUNKNOWN pUnkOuter,
    CComAggObject<contained>** pp);

Parameterwaarden

Pp
[uit] Een aanwijzer naar een CComAggObject<bevat> een aanwijzer. Als CreateInstance dit niet lukt, wordt pp ingesteld op NULL.

Retourwaarde

Een standaard HRESULT-waarde.

Opmerkingen

Het geretourneerde object heeft een verwijzingsaantal nul, dus roep AddRef onmiddellijk aan en gebruik vervolgens om de verwijzing op de objectpointer vrij te maken Release wanneer u klaar bent.

Als u geen directe toegang tot het object nodig hebt, maar toch een nieuw object wilt maken zonder overhead, gebruikt u in plaats daarvan CoCreateInstanceCComCoClass::CreateInstance.

CComAggObject::FinalConstruct

Deze methode wordt aangeroepen tijdens de laatste fasen van de objectconstructie en voert elke definitieve initialisatie uit op het m_contained lid.

HRESULT FinalConstruct();

Retourwaarde

Een standaard HRESULT-waarde.

CComAggObject::FinalRelease

Deze methode die wordt aangeroepen tijdens de vernietiging van objecten, bevrijdt het m_contained lid.

void FinalRelease();

CComAggObject::m_contained

Een CComContainedObject-object dat is afgeleid van uw klasse.

CComContainedObject<contained> m_contained;

Parameterwaarden

ingesloten
[in] Uw klasse, afgeleid van CComObjectRoot of CComObjectRootEx, evenals van andere interfaces die u voor het object wilt ondersteunen.

Opmerkingen

Alle IUnknown aanroepen m_contained worden gedelegeerd aan het buitenste onbekende.

CComAggObject::QueryInterface

Hiermee wordt een aanwijzer naar de aangevraagde interface opgehaald.

STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);

Parameterwaarden

iid
[in] De id van de interface die wordt aangevraagd.

ppvObject
[uit] Een aanwijzer naar de interfacepointer die wordt geïdentificeerd door iid. Als het object deze interface niet ondersteunt, is ppvObject ingesteld op NULL.

Pp
[uit] Een aanwijzer naar de interfacepointer geïdentificeerd door het type Q. Als het object deze interface niet ondersteunt, is pp ingesteld op NULL.

Retourwaarde

Een standaard HRESULT-waarde.

Opmerkingen

Als de aangevraagde interface is IUnknown, QueryInterface retourneert u een aanwijzer naar de eigen IUnknown waarde van het geaggregeerde object en wordt het aantal verwijzingen verhoogd. Anders voert deze methode query's uit voor de interface via het CComContainedObject lid , m_contained.

CComAggObject::Release

Hiermee wordt het aantal verwijzingen voor het geaggregeerde object afgetrokken.

STDMETHOD_(ULONG, Release)();

Retourwaarde

In builds Release voor foutopsporing wordt een waarde geretourneerd die nuttig kan zijn voor diagnostische gegevens of tests. In builds zonder foutopsporing retourneert Release altijd 0.

Zie ook

CComObject-klasse
Klasse CComPolyObject
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Overzicht van klassen