Freigeben über


CComPtrBase-Klasse

Diese Klasse stellt eine Basis für intelligente Zeigerklassen mit COM-basierten Speicherroutinen bereit.

Syntax

template <class T>
class CComPtrBase

Parameter

T
Der Objekttyp, auf den vom intelligenten Zeiger verwiesen werden soll.

Member

Öffentliche Konstruktoren

Name Beschreibung
CComPtrBase::~CComPtrBase Der Destruktor.

Öffentliche Methoden

Name Beschreibung
CComPtrBase::Advise Rufen Sie diese Methode auf, um eine Verbindung zwischen dem CComPtrBaseVerbindungspunkt und der Spüle eines Clients zu erstellen.
CComPtrBase::Attach Rufen Sie diese Methode auf, um den Besitz eines vorhandenen Zeigers zu übernehmen.
CComPtrBase::CoCreateInstance Rufen Sie diese Methode auf, um ein Objekt der Klasse zu erstellen, die einer angegebenen Klassen-ID oder Programm-ID zugeordnet ist.
CComPtrBase::CopyTo Rufen Sie diese Methode auf, um den CComPtrBase Zeiger in eine andere Zeigervariable zu kopieren.
CComPtrBase::Detach Rufen Sie diese Methode auf, um den Besitz eines Zeigers freizugeben.
CComPtrBase::IsEqualObject Rufen Sie diese Methode auf, um zu überprüfen, ob die angegebenen IUnknown Punkte auf dasselbe Objekt weisen, das dem CComPtrBase Objekt zugeordnet ist.
CComPtrBase::QueryInterface Rufen Sie diese Methode auf, um einen Zeiger auf eine angegebene Schnittstelle zurückzugeben.
CComPtrBase::Release Rufen Sie diese Methode auf, um die Schnittstelle freizugeben.
CComPtrBase::SetSite Rufen Sie diese Methode auf, um die Website des CComPtrBase Objekts auf das IUnknown übergeordnete Objekt festzulegen.

Öffentliche Operatoren

Name Beschreibung
CComPtrBase::operator T* Der Umwandlungsoperator.
CComPtrBase::operator ! Der OPERATOR NOT.
CComPtrBase::operator & Die Adresse des & Operators.
CComPtrBase::operator * Der Zeiger-zu-Operator * .
CComPtrBase::operator < Der Kleiner-als-Operator.
CComPtrBase::operator == Der Gleichheitsoperator.
CComPtrBase::operator -> Der Zeiger-zu-Member-Operator.

Öffentliche Datenmmber

Name Beschreibung
CComPtrBase::p Die Membervariable für Zeigerdaten.

Hinweise

Diese Klasse stellt die Basis für andere intelligente Zeiger bereit, die COM-Speicherverwaltungsroutinen verwenden, z CComQIPtr . B. und CComPtr. Die abgeleiteten Klassen fügen eigene Konstruktoren und Operatoren hinzu, verlassen sich jedoch auf die von CComPtrBaseihnen bereitgestellten Methoden.

Anforderungen

Kopfzeile: atlcomcli.h

CComPtrBase::Advise

Rufen Sie diese Methode auf, um eine Verbindung zwischen dem CComPtrBaseVerbindungspunkt und der Spüle eines Clients zu erstellen.

HRESULT Advise(
    IUnknown* pUnk,
    const IID& iid,
    LPDWORD pdw) throw();

Parameter

pUnk
Ein Zeiger auf die Clients IUnknown.

iid
Die GUID des Verbindungspunkts. Diese GUID ist in der Regel identisch mit der ausgehenden Schnittstelle, die vom Verbindungspunkt verwaltet wird.

pdw
Ein Zeiger auf das Cookie, das die Verbindung eindeutig identifiziert.

Rückgabewert

Gibt S_OK bei Erfolg oder bei Einem Fehler einen Fehler HRESULT zurück.

Hinweise

Weitere Informationen finden Sie unter AtlAdvise.

CComPtrBase::Attach

Rufen Sie diese Methode auf, um den Besitz eines vorhandenen Zeigers zu übernehmen.

void Attach(T* p2) throw();

Parameter

p2
Das CComPtrBase Objekt übernimmt den Besitz dieses Zeigers.

Hinweise

Attach aufruft CComPtrBase::Release die vorhandene CComPtrBase::p Membervariable und weist p2 sie dann zu CComPtrBase::p. Wenn ein CComPtrBase Objekt den Besitz eines Zeigers übernimmt, ruft es automatisch Release den Zeiger auf, wodurch der Zeiger und alle zugeordneten Daten gelöscht werden, wenn die Referenzanzahl für das Objekt auf 0 verweist.

CComPtrBase::~CComPtrBase

Der Destruktor.

~CComPtrBase() throw();

Hinweise

Gibt die Schnittstelle, auf die verwiesen wird, von CComPtrBase.

CComPtrBase::CoCreateInstance

Rufen Sie diese Methode auf, um ein Objekt der Klasse zu erstellen, die einer angegebenen Klassen-ID oder Programm-ID zugeordnet ist.

HRESULT CoCreateInstance(
    LPCOLESTR szProgID,
    LPUNKNOWN pUnkOuter = NULL,
    DWORD dwClsContext = CLSCTX_ALL) throw();

HRESULT CoCreateInstance(
    REFCLSID rclsid,
    LPUNKNOWN pUnkOuter = NULL,
    DWORD dwClsContext = CLSCTX_ALL) throw();

Parameter

szProgID
Zeiger auf eine ProgID, die zum Wiederherstellen der CLSID verwendet wird.

pUnkOuter
Wenn NULL, gibt an, dass das Objekt nicht als Teil eines Aggregats erstellt wird. Wenn kein NULL-Wert ist, ist ein Zeiger auf die Schnittstelle des Aggregatobjekts IUnknown (das Steuern IUnknown).

dwClsContext
Kontext, in dem der Code, der das neu erstellte Objekt verwaltet, ausgeführt wird.

rclsid
CLSID ist den Daten und Code zugeordnet, die zum Erstellen des Objekts verwendet werden.

Rückgabewert

Gibt S_OK bei Erfolg oder REGDB_E_CLASSNOTREG, CLASS_E_NOAGGREGATION, oder CO_E_CLASSSTRINGbei E_NOINTERFACE Fehlern zurück. Eine Beschreibung dieser Fehler finden Sie unterCoCreateClassInstance.CLSIDFromProgID

Hinweise

Wenn die erste Form der Methode aufgerufen wird, wird verwendet, CLSIDFromProgID um die CLSID wiederherzustellen. Beide Formulare rufen dann auf CoCreateClassInstance.

In Debugbuilds tritt ein Assertionsfehler auf, wenn CComPtrBase::p er nicht gleich NULL ist.

CComPtrBase::CopyTo

Rufen Sie diese Methode auf, um den CComPtrBase Zeiger in eine andere Zeigervariable zu kopieren.

HRESULT CopyTo(T** ppT) throw();

Parameter

ppT
Adresse der Variablen, die den CComPtrBase Zeiger empfangen soll.

Rückgabewert

Gibt S_OK bei Erfolg bzw. E_POINTER bei einem Fehler zurück.

Hinweise

Kopiert den CComPtrBase Zeiger in ppT. Die Verweisanzahl für die CComPtrBase::p Membervariable wird erhöht.

Wenn gleich NULL ist, wird ein Fehler HRESULT zurückgegeben ppT . In Debugbuilds tritt ein Assertionsfehler auf, wenn ppT gleich NULL ist.

CComPtrBase::Detach

Rufen Sie diese Methode auf, um den Besitz eines Zeigers freizugeben.

T* Detach() throw();

Rückgabewert

Gibt eine Kopie des Zeigers zurück.

Hinweise

Gibt den Besitz eines Zeigers frei, legt die CComPtrBase::p Datenelementvariable auf NULL fest und gibt eine Kopie des Zeigers zurück.

CComPtrBase::IsEqualObject

Rufen Sie diese Methode auf, um zu überprüfen, ob die angegebenen IUnknown Punkte auf dasselbe Objekt weisen, das dem CComPtrBase Objekt zugeordnet ist.

bool IsEqualObject(IUnknown* pOther) throw();

Parameter

pOther
Das zu vergleichende IUnknown *-Element.

Rückgabewert

Gibt true zurück, wenn die Objekte identisch sind, andernfalls "false".

CComPtrBase::operator !

Der OPERATOR NOT.

bool operator!() const throw();

Rückgabewert

Gibt true zurück, wenn der CComHeapPtr Zeiger gleich NULL ist, andernfalls "false".

CComPtrBase::operator &

Die Adresse des & Operators.

T** operator&() throw();

Rückgabewert

Gibt die Adresse des Objekts zurück, auf das das CComPtrBase Objekt verweist.

CComPtrBase::operator *

Der Zeiger-zu-Operator * .

T& operator*() const throw();

Rückgabewert

Gibt den Wert von CComPtrBase::p; d. h. einen Zeiger auf das Objekt zurück, auf das vom CComPtrBase Objekt verwiesen wird.

Wenn Debugbuilds erstellt werden, tritt ein Assertionsfehler auf, wenn CComPtrBase::p er nicht gleich NULL ist.

CComPtrBase::operator ==

Der Gleichheitsoperator.

bool operator== (T* pT) const throw();

Parameter

pT
Ein Zeiger auf ein -Objekt.

Rückgabewert

Gibt "true" zurück, wenn CComPtrBase und pT auf dasselbe Objekt zeigt, andernfalls "false".

CComPtrBase::operator ->

Der Zeiger-zu-Member-Operator.

_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();

Rückgabewert

Gibt den Wert der CComPtrBase::p Datenmemembevariable zurück.

Hinweise

Verwenden Sie diesen Operator, um eine Methode in einer Klasse aufzurufen, auf die das CComPtrBase Objekt verweist. In Debugbuilds tritt ein Assertionsfehler auf, wenn der CComPtrBase Datenmemm auf NULL verweist.

CComPtrBase::operator <

Der Kleiner-als-Operator.

bool operator<(T* pT) const throw();

Parameter

pT
Ein Zeiger auf ein -Objekt.

Rückgabewert

Gibt true zurück, wenn der vom aktuellen Objekt verwaltete Zeiger kleiner als der Zeiger ist, mit dem er verglichen wird.

CComPtrBase::operator T*

Der Umwandlungsoperator.

operator T*() const throw();

Hinweise

Gibt einen Zeiger auf den objektdatentyp zurück, der in der Klassenvorlage definiert ist.

CComPtrBase::p

Die Membervariable für Zeigerdaten.

T* p;

Hinweise

Diese Membervariable enthält die Zeigerinformationen.

CComPtrBase::QueryInterface

Rufen Sie diese Methode auf, um einen Zeiger auf eine angegebene Schnittstelle zurückzugeben.

template <class Q> HRESULT QueryInterface(Q
** pp) const throw();

Parameter

Q
Der Objekttyp, dessen Schnittstellenzeiger erforderlich ist.

pp
Adresse der Ausgabevariable, die den angeforderten Schnittstellenzeiger empfängt.

Rückgabewert

Gibt bei Erfolg oder E_NOINTERFACE bei Fehlern zurückS_OK.

Hinweise

Diese Methode ruft IUnknown::QueryInterface auf.

In Debugbuilds tritt ein Assertionsfehler auf, wenn pp er nicht gleich NULL ist.

CComPtrBase::Release

Rufen Sie diese Methode auf, um die Schnittstelle freizugeben.

void Release() throw();

Hinweise

Die Schnittstelle wird freigegeben und CComPtrBase::p auf NULL festgelegt.

CComPtrBase::SetSite

Rufen Sie diese Methode auf, um die Website des CComPtrBase Objekts auf das IUnknown übergeordnete Objekt festzulegen.

HRESULT SetSite(IUnknown* punkParent) throw();

Parameter

punkParent
Ein Zeiger auf die IUnknown Schnittstelle des übergeordneten Elements.

Rückgabewert

Gibt S_OK bei Erfolg oder bei Einem Fehler einen Fehler HRESULT zurück.

Hinweise

Diese Methode ruft AtlSetChildSite auf.

Siehe auch

Klassenübersicht