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.

Członkowie

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 CComPtrBasepunktem 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 CComPtrBaseprogram .

Wymagania

Nagłówek: atlcomcli.h

CComPtrBase::Advise

Wywołaj tę metodę, aby utworzyć połączenie między CComPtrBasepunktem 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

W celu uzyskania więcej informacji, zobacz następujący temat: 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_CLASSSTRINGlub 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.

Zobacz też

Omówienie klasy