Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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
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