CComPtrBase
Klasa
Ta klasa stanowi podstawę dla inteligentnych klas wskaźników przy użyciu procedur pamięci opartych na modelu COM.
Składnia
template <class T>
class CComPtrBase
Parametry
T
Typ obiektu, do do którym ma odwoływać się inteligentny wskaźnik.
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CComPtrBase::~CComPtrBase |
Destruktora. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CComPtrBase::Advise |
Wywołaj tę metodę, aby utworzyć połączenie między CComPtrBase punktem połączenia a ujściem klienta. |
CComPtrBase::Attach |
Wywołaj tę metodę, aby przejąć własność istniejącego wskaźnika. |
CComPtrBase::CoCreateInstance |
Wywołaj tę metodę, aby utworzyć obiekt klasy skojarzonej z określonym identyfikatorem klasy lub identyfikatorem programu. |
CComPtrBase::CopyTo |
Wywołaj tę metodę, aby skopiować CComPtrBase wskaźnik do innej zmiennej wskaźnika. |
CComPtrBase::Detach |
Wywołaj tę metodę, aby zwolnić własność wskaźnika. |
CComPtrBase::IsEqualObject |
Wywołaj tę metodę, aby sprawdzić, czy określone IUnknown punkty do tego samego obiektu skojarzonego z obiektem CComPtrBase . |
CComPtrBase::QueryInterface |
Wywołaj tę metodę, aby zwrócić wskaźnik do określonego interfejsu. |
CComPtrBase::Release |
Wywołaj tę metodę, aby zwolnić interfejs. |
CComPtrBase::SetSite |
Wywołaj tę metodę, aby ustawić lokację CComPtrBase obiektu na IUnknown obiekt nadrzędny. |
Operatory publiczne
Nazwa/nazwisko | opis |
---|---|
CComPtrBase::operator T* |
Operator rzutowania. |
CComPtrBase::operator ! |
Operator NOT. |
CComPtrBase::operator & |
Operator address-of & . |
CComPtrBase::operator * |
Operator wskaźnika do * . |
CComPtrBase::operator < |
Operator less-than. |
CComPtrBase::operator == |
Operator równości. |
CComPtrBase::operator -> |
Operator wskaźnik-składowy. |
Elementy członkowskie danych publicznych
Nazwa/nazwisko | opis |
---|---|
CComPtrBase::p |
Zmienna składowa danych wskaźnika. |
Uwagi
Ta klasa stanowi podstawę dla innych inteligentnych wskaźników korzystających z procedur zarządzania pamięcią COM, takich jak CComQIPtr
i CComPtr
. Klasy pochodne dodają własne konstruktory i operatory, ale polegają na metodach dostarczonych przez CComPtrBase
program .
Wymagania
Nagłówek: atlcomcli.h
CComPtrBase::Advise
Wywołaj tę metodę, aby utworzyć połączenie między CComPtrBase
punktem połączenia a ujściem klienta.
HRESULT Advise(
IUnknown* pUnk,
const IID& iid,
LPDWORD pdw) throw();
Parametry
pUnk
Wskaźnik do klienta IUnknown
.
iid
Identyfikator GUID punktu połączenia. Zazwyczaj ten identyfikator GUID jest taki sam jak interfejs wychodzący zarządzany przez punkt połączenia.
pdw
Wskaźnik do pliku cookie, który jednoznacznie identyfikuje połączenie.
Wartość zwracana
Zwraca wartość S_OK
powodzenia lub błąd HRESULT
po niepowodzeniu.
Uwagi
Aby uzyskać więcej informacji, zobacz AtlAdvise
.
CComPtrBase::Attach
Wywołaj tę metodę, aby przejąć własność istniejącego wskaźnika.
void Attach(T* p2) throw();
Parametry
p2
Obiekt CComPtrBase
przejmie na własność ten wskaźnik.
Uwagi
Attach
wywołuje CComPtrBase::Release
istniejącą CComPtrBase::p
zmienną składową, a następnie przypisuje p2
do CComPtrBase::p
. CComPtrBase
Gdy obiekt przejmuje własność wskaźnika, automatycznie wywoła Release
wskaźnik, co spowoduje usunięcie wskaźnika i wszelkich przydzielonych danych, jeśli liczba odwołań względem obiektu przekroczy wartość 0.
CComPtrBase::~CComPtrBase
Destruktora.
~CComPtrBase() throw();
Uwagi
Zwalnia interfejs wskazywany przez CComPtrBase
.
CComPtrBase::CoCreateInstance
Wywołaj tę metodę, aby utworzyć obiekt klasy skojarzonej z określonym identyfikatorem klasy lub identyfikatorem programu.
HRESULT CoCreateInstance(
LPCOLESTR szProgID,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL) throw();
HRESULT CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL) throw();
Parametry
szProgID
Wskaźnik do identyfikatora ProgID używanego do odzyskania identyfikatora CLSID.
pUnkOuter
Jeśli wartość NULL oznacza, że obiekt nie jest tworzony w ramach agregacji. Jeśli wartość nie ma wartości NULL, jest wskaźnikiem do interfejsu obiektu IUnknown
agregacji (kontrolka IUnknown
).
dwClsContext
Kontekst, w którym zostanie uruchomiony kod zarządzający nowo utworzonym obiektem.
rclsid
IDENTYFIKATOR CLSID skojarzony z danymi i kodem, który zostanie użyty do utworzenia obiektu.
Wartość zwracana
Zwraca wartość S_OK
powodzenia lub REGDB_E_CLASSNOTREG
, CLASS_E_NOAGGREGATION
, CO_E_CLASSSTRING
lub E_NOINTERFACE
w przypadku niepowodzenia. Zobacz CoCreateClassInstance
i CLSIDFromProgID
, aby zapoznać się z opisem tych błędów.
Uwagi
Jeśli wywoływana jest pierwsza forma metody, CLSIDFromProgID
jest używana do odzyskania identyfikatora CLSID. Obie formularze następnie wywołają metodę CoCreateClassInstance
.
W kompilacjach debugowania wystąpi błąd asercji, jeśli CComPtrBase::p
nie jest równy wartości NULL.
CComPtrBase::CopyTo
Wywołaj tę metodę, aby skopiować CComPtrBase
wskaźnik do innej zmiennej wskaźnika.
HRESULT CopyTo(T** ppT) throw();
Parametry
ppT
Adres zmiennej do odbierania CComPtrBase
wskaźnika.
Wartość zwracana
Zwraca powodzenie S_OK
po E_POINTER
niepowodzeniu.
Uwagi
Kopiuje CComPtrBase
wskaźnik do ppT
. Liczba odwołań dla zmiennej składowej CComPtrBase::p
jest zwiększana.
Jeśli wartość null jest równa null, zostanie zwrócony ppT
błądHRESULT
. W kompilacjach debugowania wystąpi błąd asercji, jeśli ppT
jest równy wartości NULL.
CComPtrBase::Detach
Wywołaj tę metodę, aby zwolnić własność wskaźnika.
T* Detach() throw();
Wartość zwracana
Zwraca kopię wskaźnika.
Uwagi
Zwalnia własność wskaźnika, ustawia CComPtrBase::p
zmienną składową danych na wartość NULL i zwraca kopię wskaźnika.
CComPtrBase::IsEqualObject
Wywołaj tę metodę, aby sprawdzić, czy określone IUnknown
punkty do tego samego obiektu skojarzonego z obiektem CComPtrBase
.
bool IsEqualObject(IUnknown* pOther) throw();
Parametry
pOther
Element IUnknown *
do porównania.
Wartość zwracana
Zwraca wartość true, jeśli obiekty są identyczne, w przeciwnym razie wartość false.
CComPtrBase::operator !
Operator NOT.
bool operator!() const throw();
Wartość zwracana
Zwraca wartość true, jeśli CComHeapPtr
wskaźnik ma wartość NULL, w przeciwnym razie wartość false.
CComPtrBase::operator &
Operator address-of &
.
T** operator&() throw();
Wartość zwracana
Zwraca adres obiektu wskazywanego CComPtrBase
przez obiekt.
CComPtrBase::operator *
Operator wskaźnika do *
.
T& operator*() const throw();
Wartość zwracana
Zwraca wartość CComPtrBase::p
, czyli wskaźnik do obiektu, do którego odwołuje CComPtrBase
się obiekt.
W przypadku kompilacji debugowania wystąpi błąd asercji, jeśli CComPtrBase::p
nie jest równy wartości NULL.
CComPtrBase::operator ==
Operator równości.
bool operator== (T* pT) const throw();
Parametry
pT
Wskaźnik do obiektu.
Wartość zwracana
Zwraca wartość true, jeśli CComPtrBase
i pT
wskazuje ten sam obiekt, w przeciwnym razie wartość false.
CComPtrBase::operator ->
Operator wskaźnika do elementu członkowskiego.
_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();
Wartość zwracana
Zwraca wartość zmiennej składowej CComPtrBase::p
danych.
Uwagi
Użyj tego operatora, aby wywołać metodę w klasie wskazywanej CComPtrBase
przez obiekt. W kompilacjach debugowania wystąpi błąd asercji, jeśli CComPtrBase
element członkowski danych wskazuje wartość NULL.
CComPtrBase::operator <
Operator less-than.
bool operator<(T* pT) const throw();
Parametry
pT
Wskaźnik do obiektu.
Wartość zwracana
Zwraca wartość true, jeśli wskaźnik zarządzany przez bieżący obiekt jest mniejszy niż wskaźnik, do którego jest porównywany.
CComPtrBase::operator T*
Operator rzutowania.
operator T*() const throw();
Uwagi
Zwraca wskaźnik do typu danych obiektu zdefiniowanego w szablonie klasy.
CComPtrBase::p
Zmienna składowa danych wskaźnika.
T* p;
Uwagi
Ta zmienna składowa przechowuje informacje o wskaźniku.
CComPtrBase::QueryInterface
Wywołaj tę metodę, aby zwrócić wskaźnik do określonego interfejsu.
template <class Q> HRESULT QueryInterface(Q
** pp) const throw();
Parametry
Q
Typ obiektu, którego wskaźnik interfejsu jest wymagany.
pp
Adres zmiennej wyjściowej, która odbiera żądany wskaźnik interfejsu.
Wartość zwracana
Zwraca wartość S_OK
powodzenia lub E_NOINTERFACE
niepowodzenia.
Uwagi
Ta metoda wywołuje metodę IUnknown::QueryInterface
.
W kompilacjach debugowania wystąpi błąd asercji, jeśli pp
nie jest równy wartości NULL.
CComPtrBase::Release
Wywołaj tę metodę, aby zwolnić interfejs.
void Release() throw();
Uwagi
Interfejs jest zwalniany i CComPtrBase::p
jest ustawiony na wartość NULL.
CComPtrBase::SetSite
Wywołaj tę metodę, aby ustawić lokację CComPtrBase
obiektu na IUnknown
obiekt nadrzędny.
HRESULT SetSite(IUnknown* punkParent) throw();
Parametry
punkParent
Wskaźnik do IUnknown
interfejsu elementu nadrzędnego.
Wartość zwracana
Zwraca wartość S_OK
powodzenia lub błąd HRESULT
po niepowodzeniu.
Uwagi
Ta metoda wywołuje metodę AtlSetChildSite
.