Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс
Замечание
Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Этот класс предоставляет основу для интеллектуальных классов указателей с помощью процедур памяти на основе 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 успешного выполнения или REGDB_E_CLASSNOTREGCLASS_E_NOAGGREGATIONCO_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 сбое.
Замечания
Копирует указатель CComPtrBaseв ppT . Число ссылок в переменной-члене 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.