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
CComAggObject
implementiert 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
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 CoCreateInstance
zu 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 Q
identifiziert 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