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


Класс CComCachedTearOffObject

Этот класс реализует IUnknown для интерфейса разрыва.

Синтаксис

template
<class contained>
class CComCachedTearOffObject : public
    IUnknown,
public CComObjectRootEx<contained
::_ThreadModel::ThreadModelNoCS>

Параметры

Содержащиеся
Класс разрыва, производный от CComTearOffObjectBase и интерфейсов, которые требуется поддерживать объект слеза.

Участники

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

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

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

Имя Описание
CComCachedTearOffObject::AddRef Увеличивает число ссылок для CComCachedTearOffObject объекта.
CComCachedTearOffObject::FinalConstruct m_contained::FinalConstruct Вызывает метод слезоточивого класса.
CComCachedTearOffObject::FinalRelease m_contained::FinalRelease Вызывает метод слезоточивого класса.
CComCachedTearOffObject::QueryInterface Возвращает указатель на IUnknownCComCachedTearOffObject объект или запрошенный интерфейс в классе отключения (класс contained).
CComCachedTearOffObject::Release Уменьшает число ссылок для CComCachedTearOffObject объекта и уничтожает его, если число ссылок равно 0.

Открытые члены данных

Имя Описание
CComCachedTearOffObject::m_contained Объект, CComContainedObject производный от класса слезы (класса contained).

Замечания

CComCachedTearOffObjectреализует IUnknown для интерфейса разрыва. Этот класс отличается от CComTearOffObjectCComCachedTearOffObject того, что имеет свой IUnknownсобственный, отдельный от объекта владельца (владелец является объектом IUnknown , для которого создается разрыв). CComCachedTearOffObject сохраняет собственное число ссылок на его IUnknown и удаляет себя после того, как его число ссылок равно нулю. Однако если вы запрашиваете любой из его интерфейсов отключения, количество ссылок объекта IUnknown владельца будет увеличиваться.

CComCachedTearOffObject Если объект, реализующий разрыв, уже создается экземпляр, и интерфейс отключения запрашивается повторно, тот же CComCachedTearOffObject объект повторно используется. В отличие от этого, если интерфейс разрыва, реализованный CComTearOffObject объектом владельца, снова запрашивается через объект владельца, другой CComTearOffObject будет создан экземпляр.

Класс владельца должен реализовывать FinalRelease и вызывать Release кэшированные IUnknown для него CComCachedTearOffObjectзначения, что приведет к уменьшению количества ссылок. Это приведет CComCachedTearOffObjectFinalRelease к вызову и удалению разрыва.

Иерархия наследования

CComObjectRootBase

CComObjectRootEx

IUnknown

CComCachedTearOffObject

Требования

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

CComCachedTearOffObject::AddRef

Увеличивает число CComCachedTearOffObject ссылок объекта на 1.

STDMETHOD_(ULONG, AddRef)();

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

Значение, которое может быть полезно для диагностика и тестирования.

CComCachedTearOffObject::CComCachedTearOffObject

Конструктор.

CComCachedTearOffObject(void* pv);

Параметры

Pv
[in] Указатель на IUnknownCComCachedTearOffObjectэлемент .

Замечания

Инициализирует CComContainedObject элемент, m_contained.

CComCachedTearOffObject::~CComCachedTearOffObject

Деструктор

~CComCachedTearOffObject();

Замечания

Освобождает все выделенные ресурсы и вызывает FinalRelease.

CComCachedTearOffObject::FinalConstruct

Вызовы для создания m_contained, объект, используемый для доступа к интерфейсу,>contained<CComContainedObject реализуемого классом слезы.m_contained::FinalConstruct

HRESULT FinalConstruct();

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

Стандартное значение HRESULT.

CComCachedTearOffObject::FinalRelease

Вызовы m_contained::FinalRelease бесплатного m_containedобъекта CComContainedObject<contained> .

void FinalRelease();

CComCachedTearOffObject::m_contained

Объект CComContainedObject, производный от класса разрыва.

CcomContainedObject <contained> m_contained;

Параметры

Содержащиеся
[in] Класс разрыва, производный от CComTearOffObjectBase и интерфейсов, которые требуется поддерживать объект слеза.

Замечания

Методы m_contained наследуются для доступа к интерфейсу слеза в классе слезы через кэшированный объект QueryInterfaceслезы и FinalConstructFinalRelease.

CComCachedTearOffObject::QueryInterface

Извлекает указатель на запрошенный интерфейс.

STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);

Параметры

Iid
[in] Идентификатор GUID запрашиваемого интерфейса.

ppvObject
[out] Указатель на указатель интерфейса, определяемый iid или NULL, если интерфейс не найден.

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

Стандартное значение HRESULT.

Замечания

Если запрошенный интерфейс имеет значение IUnknown, возвращает указатель на CComCachedTearOffObjectсобственный IUnknown и увеличивает число ссылок. В противном случае запросы к интерфейсу в классе разрыва с помощью метода InternalQueryInterface , унаследованного от CComObjectRootEx.

CComCachedTearOffObject::Release

Уменьшает число ссылок на 1 и, если число ссылок равно 0, удаляет CComCachedTearOffObject объект.

STDMETHOD_(ULONG, Release)();

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

В сборках, отличных от отладки, всегда возвращается значение 0. В отладочных сборках возвращает значение, которое может быть полезно для диагностика или тестирования.

См. также

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