Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс
Этот класс предоставляет основу для интеллектуальных классов указателей с помощью процедур памяти на основе 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.