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 CComPtrBase Verbindungspunkt 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 CComPtrBase
ihnen bereitgestellten Methoden.
Anforderungen
Kopfzeile: atlcomcli.h
CComPtrBase::Advise
Rufen Sie diese Methode auf, um eine Verbindung zwischen dem CComPtrBase
Verbindungspunkt 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_CLASSSTRING
bei 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.