Freigeben über


CComAggObject-Klasse

Diese Klasse implementiert die IUnknown-Schnittstelle für ein aggregiertes Objekt. Standardmäßig ist ein aggregiertes Objekt in einem äußeren Objekt enthalten. Die CComAggObject Klasse ähnelt der CComObject-Klasse, mit der Ausnahme, dass sie eine Schnittstelle verfügbar macht, auf die direkt auf externe Clients zugegriffen werden kann.

Syntax

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

Parameter

enthalten
Ihre Von CComObjectRoot oder CComObjectRootEx abgeleitete Klasse sowie alle anderen Schnittstellen, die Sie für das Objekt unterstützen möchten.

Member

Öffentliche Konstruktoren

Name Beschreibung
CComAggObject::CComAggObject Der Konstruktor.
CComAggObject::~CComAggObject Der Destruktor.

Öffentliche Methoden

Name Beschreibung
CComAggObject::AddRef Erhöht die Verweisanzahl für das aggregierte Objekt.
CComAggObject::CreateInstance Mit dieser statischen Funktion können Sie ein neues CComAggObject-Objekt contained ><ohne den Aufwand von CoCreateInstance erstellen.
CComAggObject::FinalConstruct Führt die endgültige Initialisierung von m_contained.
CComAggObject::FinalRelease Führt die endgültige Zerstörung von m_contained.
CComAggObject::QueryInterface Ruft einen Zeiger auf die angeforderte Schnittstelle ab.
CComAggObject::Release Erhöht die Verweisanzahl für das aggregierte Objekt.

Öffentliche Datenmember

Name Beschreibung
CComAggObject::m_contained Delegiert Aufrufe IUnknown an das äußere Unbekannte.

Hinweise

CComAggObjectimplementiert IUnknown für ein aggregiertes Objekt. CComAggObject verfügt über eine eigene IUnknown Schnittstelle, getrennt von der Schnittstelle des IUnknown äußeren Objekts und verwaltet die eigene Referenzanzahl.

Weitere Informationen zur Aggregation finden Sie im Artikel Grundlagen von ATL COM-Objekten.

Vererbungshierarchie

CComObjectRootBase

CComObjectRootEx

IUnknown

CComAggObject

Anforderungen

Kopfzeile: atlcom.h

CComAggObject::AddRef

Erhöht die Verweisanzahl für das aggregierte Objekt.

STDMETHOD_(ULONG, AddRef)();

Rückgabewert

Ein Wert, der für Diagnosen oder Tests nützlich sein kann.

CComAggObject::CComAggObject

Der Konstruktor.

CComAggObject(void* pv);

Parameter

Pv
[in] Das äußere Unbekannte.

Hinweise

Initialisiert das CComContainedObject Element, m_contained und erhöht die Anzahl der Modulsperren.

Der Destruktor erhöht die Anzahl der Modulsperren.

CComAggObject::~CComAggObject

Der Destruktor.

~CComAggObject();

Hinweise

Gibt alle zugeordneten Ressourcen frei, ruft FinalRelease auf und erhöht die Modulsperranzahl.

CComAggObject::CreateInstance

Mit dieser statischen Funktion können Sie ein neues CComAggObject-Objektcontained>< ohne den Aufwand von CoCreateInstance erstellen.

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

Parameter

PP
[out] Ein Zeiger auf ein CComAggObject<enthaltener> Zeiger. Wenn CreateInstance dies nicht erfolgreich ist, wird pp auf NULL festgelegt.

Rückgabewert

Ein HRESULT-Standardwert.

Hinweise

Das zurückgegebene Objekt weist eine Bezugsanzahl von Null auf. Rufen Sie also sofort auf AddRef , um Release den Verweis auf den Objektzeiger freizugeben, wenn Sie fertig sind.

Wenn Sie keinen direkten Zugriff auf das Objekt benötigen, aber dennoch ein neues Objekt erstellen möchten, ohne den Aufwand CoCreateInstancezu haben, verwenden Sie stattdessen CComCoClass::CreateInstance .

CComAggObject::FinalConstruct

Diese Methode wird während der letzten Phasen der Objektkonstruktion aufgerufen und führt alle endgültigen Initialisierungen für das m_contained-Element durch.

HRESULT FinalConstruct();

Rückgabewert

Ein HRESULT-Standardwert.

CComAggObject::FinalRelease

Diese Methode wird während der Objektvernichtung aufgerufen und gibt das m_contained Element frei.

void FinalRelease();

CComAggObject::m_contained

Ein von Ihrer Klasse abgeleitetes CComContainedObject-Objekt .

CComContainedObject<contained> m_contained;

Parameter

enthalten
[in] Ihre Von CComObjectRoot oder CComObjectRootEx abgeleitete Klasse sowie alle anderen Schnittstellen, die Sie für das Objekt unterstützen möchten.

Hinweise

Alle IUnknown Aufrufe m_contained werden an das äußere Unbekannte delegiert.

CComAggObject::QueryInterface

Ruft einen Zeiger auf die angeforderte Schnittstelle ab.

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

Parameter

iid
[in] Der Bezeichner der angeforderten Schnittstelle.

ppvObject
[out] Ein Zeiger auf den Schnittstellenzeiger, der durch iid identifiziert wird. Wenn das Objekt diese Schnittstelle nicht unterstützt, wird ppvObject auf NULL festgelegt.

PP
[out] Ein Zeiger auf den Schnittstellenzeiger, der vom Typ Qidentifiziert wird. Wenn das Objekt diese Schnittstelle nicht unterstützt, wird pp auf NULL festgelegt.

Rückgabewert

Ein HRESULT-Standardwert.

Hinweise

Wenn die angeforderte Schnittstelle lautet IUnknown, QueryInterface wird ein Zeiger auf das eigene IUnknown aggregierte Objekt zurückgegeben und die Referenzanzahl erhöht. Andernfalls fragt diese Methode die Schnittstelle über das CComContainedObject Element m_contained ab.

CComAggObject::Release

Erhöht die Verweisanzahl für das aggregierte Objekt.

STDMETHOD_(ULONG, Release)();

Rückgabewert

Gibt in Debugbuilds einen Wert zurück, Release der für Diagnosen oder Tests nützlich sein kann. Gibt in Nicht-Debug-Builds Release immer "0" zurück.

Siehe auch

CComObject-Klasse
CComPolyObject-Klasse
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Klassenübersicht