Поделиться через


Класс CComPtrBase

Этот класс предоставляет основу для интеллектуальных классов указателей с помощью процедур памяти на основе COM.

Синтаксис

template <class T>
class CComPtrBase

Параметры

T
Тип объекта, на который ссылается смарт-указатель.

Участники

Открытые конструкторы

Имя Описание
CComPtrBase::~CComPtrBase Деструктор

Открытые методы

Имя Описание
CComPtrBase::Advise Вызовите этот метод, чтобы создать соединение между CComPtrBaseточкой подключения и приемником клиента.
CComPtrBase::Attach Вызовите этот метод для владения существующим указателем.
CComPtrBase::CoCreateInstance Вызовите этот метод для создания объекта класса, связанного с указанным идентификатором класса или идентификатором программы.
CComPtrBase::CopyTo Вызовите этот метод, чтобы скопировать указатель на CComPtrBase другую переменную указателя.
CComPtrBase::Detach Вызовите этот метод, чтобы освободить владение указателем.
CComPtrBase::IsEqualObject Вызовите этот метод, чтобы проверка, если указанные IUnknown точки на тот же объект, связанный с CComPtrBase объектом.
CComPtrBase::QueryInterface Вызовите этот метод, чтобы вернуть указатель на указанный интерфейс.
CComPtrBase::Release Вызовите этот метод, чтобы освободить интерфейс.
CComPtrBase::SetSite Вызовите этот метод, чтобы задать сайт CComPtrBase объекта IUnknown родительскому объекту.

Общедоступные операторы

Имя Описание
CComPtrBase::operator T* Оператор приведения.
CComPtrBase::operator ! Оператор NOT.
CComPtrBase::operator & Оператор адреса & .
CComPtrBase::operator * Оператор указателя на * .
CComPtrBase::operator < Оператор меньше, чем оператор.
CComPtrBase::operator == Оператор равенства.
CComPtrBase::operator -> Оператор указателя на члены.

Общедоступные члены данных

Имя Описание
CComPtrBase::p Переменная элемента данных указателя.

Замечания

Этот класс предоставляет основу для других смарт-указателей, использующих процедуры управления памятью COM, такие как CComQIPtr и CComPtr. Производные классы добавляют собственные конструкторы и операторы, но полагаются на методы, предоставляемые CComPtrBase.

Требования

Заголовок: atlcomcli.h

CComPtrBase::Advise

Вызовите этот метод, чтобы создать соединение между CComPtrBaseточкой подключения и приемником клиента.

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

Параметры

pUnk
Указатель на клиент IUnknown.

iid
GUID точки подключения. Как правило, этот GUID совпадает с исходящим интерфейсом, управляемым точкой подключения.

pdw
Указатель на файл cookie, который однозначно идентифицирует соединение.

Возвращаемое значение

Возвращает успешность S_OK или ошибку HRESULT при сбое.

Замечания

Дополнительные сведения см. в разделе AtlAdvise.

CComPtrBase::Attach

Вызовите этот метод для владения существующим указателем.

void Attach(T* p2) throw();

Параметры

p2
Объект CComPtrBase будет иметь владение этим указателем.

Замечания

Attachвызывает CComPtrBase::Release существующую переменную-член, а затем назначается CComPtrBase::pp2 .CComPtrBase::p CComPtrBase Когда объект берет на себя владение указателем, он автоматически вызывает Release указатель, который удаляет указатель и все выделенные данные, если счетчик ссылок объекта переходит к 0.

CComPtrBase::~CComPtrBase

Деструктор

~CComPtrBase() throw();

Замечания

Освобождает интерфейс, на который указывает CComPtrBase.

CComPtrBase::CoCreateInstance

Вызовите этот метод для создания объекта класса, связанного с указанным идентификатором класса или идентификатором программы.

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

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

Параметры

szProgID
Указатель на ProgID, используемый для восстановления CLSID.

pUnkOuter
Если значение NULL, указывает, что объект не создается в составе агрегата. Если значение NULL не равно NULL, это указатель на интерфейс агрегатного IUnknown объекта (контролируемый IUnknownобъект).

dwClsContext
Контекст, в котором будет выполняться код, который управляет только что созданным объектом.

rclsid
CLSID, связанный с данными и кодом, которые будут использоваться для создания объекта.

Возвращаемое значение

Возвращает значение S_OK успешного выполнения или CLASS_E_NOAGGREGATIONREGDB_E_CLASSNOTREGCO_E_CLASSSTRING, или E_NOINTERFACE при сбое. См CoCreateClassInstance . и CLSIDFromProgID описание этих ошибок.

Замечания

Если вызывается первая форма метода, CLSIDFromProgID используется для восстановления CLSID. Обе формы вызываются CoCreateClassInstance.

В сборках отладки ошибка утверждения будет возникать, если CComPtrBase::p значение NULL не равно NULL.

CComPtrBase::CopyTo

Вызовите этот метод, чтобы скопировать указатель на CComPtrBase другую переменную указателя.

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

Параметры

ppT
Адрес переменной для получения указателя CComPtrBase .

Возвращаемое значение

Возвращает успешность S_OK при E_POINTER сбое.

Замечания

Копирует указатель ppTв CComPtrBase . Число ссылок в переменной-члене CComPtrBase::p увеличивается.

Ошибка HRESULT будет возвращена, если ppT равно NULL. В отладочных сборках ошибка утверждения будет возникать, если ppT равно NULL.

CComPtrBase::Detach

Вызовите этот метод, чтобы освободить владение указателем.

T* Detach() throw();

Возвращаемое значение

Возвращает копию указателя.

Замечания

Освобождает владение указателем, задает CComPtrBase::p переменную члена данных значение NULL и возвращает копию указателя.

CComPtrBase::IsEqualObject

Вызовите этот метод, чтобы проверка, если указанные IUnknown точки на тот же объект, связанный с CComPtrBase объектом.

bool IsEqualObject(IUnknown* pOther) throw();

Параметры

pOther
Объект IUnknown * для сравнения.

Возвращаемое значение

Возвращает значение true, если объекты идентичны, значение false в противном случае.

CComPtrBase::operator !

Оператор NOT.

bool operator!() const throw();

Возвращаемое значение

Возвращает значение true, если CComHeapPtr указатель равен NULL, в противном случае — значение false.

CComPtrBase::operator &

Оператор адреса & .

T** operator&() throw();

Возвращаемое значение

Возвращает адрес объекта, на который указывает CComPtrBase объект.

CComPtrBase::operator *

Оператор указателя на * .

T& operator*() const throw();

Возвращаемое значение

Возвращает значение CComPtrBase::p; то есть указатель на объект, на который CComPtrBase ссылается объект.

Если отладочные сборки, ошибка утверждения будет возникать, если CComPtrBase::p значение NULL не равно NULL.

CComPtrBase::operator ==

Оператор равенства.

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

Параметры

pT
Указатель на объект .

Возвращаемое значение

Возвращает значение true, если CComPtrBase и pT указывает на тот же объект, значение false в противном случае.

CComPtrBase::operator ->

Оператор указателя на член.

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

Возвращаемое значение

Возвращает значение переменной CComPtrBase::p члена данных.

Замечания

Этот оператор используется для вызова метода в классе, на который указывает CComPtrBase объект. При отладке сборки произойдет сбой утверждения, если CComPtrBase член данных указывает на NULL.

CComPtrBase::operator <

Оператор меньше, чем оператор.

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

Параметры

pT
Указатель на объект .

Возвращаемое значение

Возвращает значение true, если указатель, управляемый текущим объектом, меньше указателя, с которым сравнивается указатель.

CComPtrBase::operator T*

Оператор приведения.

operator T*() const throw();

Замечания

Возвращает указатель на тип данных объекта, определенный в шаблоне класса.

CComPtrBase::p

Переменная элемента данных указателя.

T* p;

Замечания

Эта переменная-член содержит сведения указателя.

CComPtrBase::QueryInterface

Вызовите этот метод, чтобы вернуть указатель на указанный интерфейс.

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

Параметры

Q
Тип объекта, указатель интерфейса которого является обязательным.

pp
Адрес выходной переменной, получающей запрошенный указатель интерфейса.

Возвращаемое значение

Возвращает значение S_OK успешного выполнения или E_NOINTERFACE сбоя.

Замечания

Этот метод вызывает IUnknown::QueryInterface.

В сборках отладки ошибка утверждения будет возникать, если pp значение NULL не равно NULL.

CComPtrBase::Release

Вызовите этот метод, чтобы освободить интерфейс.

void Release() throw();

Замечания

Интерфейс освобождается и CComPtrBase::p имеет значение NULL.

CComPtrBase::SetSite

Вызовите этот метод, чтобы задать сайт CComPtrBase объекта IUnknown родительскому объекту.

HRESULT SetSite(IUnknown* punkParent) throw();

Параметры

punkParent
Указатель на IUnknown интерфейс родительского элемента.

Возвращаемое значение

Возвращает успешность S_OK или ошибку HRESULT при сбое.

Замечания

Этот метод вызывает AtlSetChildSite.

См. также

Общие сведения о классе