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 | 傳回 物件的指標IUnknown CComCachedTearOffObject ,或您卸除類別上要求的介面指標(類別contained )。 |
CComCachedTearOffObject::Release | 遞減 對象的參考計數 CComCachedTearOffObject ,並在參考計數為 0 時終結它。 |
公用資料成員
名稱 | 描述 |
---|---|
CComCachedTearOffObject::m_contained | CComContainedObject 衍生自卸除類別的物件(類別 contained )。 |
備註
CComCachedTearOffObject
會 實作卸除介面的 IUnknown 。 這個類別與 CComTearOffObject
中 CComCachedTearOffObject
有自己的 IUnknown
不同,不同於擁有者物件的 IUnknown
(擁有者是正在建立卸除的物件)。 CComCachedTearOffObject
在其上 IUnknown
維護自己的參考計數,並在其參考計數為零時刪除本身。 不過,如果您查詢其任何卸除介面,則擁有者對象的 IUnknown
參考計數將會遞增。
CComCachedTearOffObject
如果實作卸除的對象已經具現化,而且再次查詢卸除介面,則會重複使用相同的CComCachedTearOffObject
物件。 相反地,如果 透過擁有者物件再次查詢 所 CComTearOffObject
實作的卸除介面,則會具現化另一個 CComTearOffObject
介面。
擁有者類別必須在 快取IUnknown
CComCachedTearOffObject
的 上實FinalRelease
作 並呼叫 Release
,這會遞減其參考計數。 這會導致CComCachedTearOffObject
FinalRelease
呼叫 並刪除卸除。
繼承階層架構
CComObjectRootBase
IUnknown
CComCachedTearOffObject
需求
標頭: atlcom.h
CComCachedTearOffObject::AddRef
將對象的參考計數 CComCachedTearOffObject
遞增 1。
STDMETHOD_(ULONG, AddRef)();
傳回值
對於診斷和測試而言可能很有用的值。
CComCachedTearOffObject::CComCachedTearOffObject
建構函式。
CComCachedTearOffObject(void* pv);
參數
光伏
[in] IUnknown
的 CComCachedTearOffObject
指標。
備註
CComContainedObject
初始化成員,m_contained。
CComCachedTearOffObject::~CComCachedTearOffObject
解構函式。
~CComCachedTearOffObject();
備註
釋放所有已配置的資源,並呼叫 FinalRelease。
CComCachedTearOffObject::FinalConstruct
呼叫 m_contained::FinalConstruct
以建立 m_contained
,對象contained
CComContainedObject
<>用來存取您卸除類別所實作的介面。
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
FinalConstruct
和FinalRelease
存取卸除類別中的卸除介面。
CComCachedTearOffObject::QueryInterface
擷取所要求介面的指標。
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
參數
iid
[in]所要求介面的 GUID。
ppvObject
[out]iid 所識別之介面指標的指標,如果找不到介面,則為 NULL。
傳回值
標準 HRESULT 值。
備註
如果要求的介面為 IUnknown
,則會傳回 本身 CComCachedTearOffObject
的 IUnknown
指標,並遞增參考計數。 否則,使用繼承自CComObjectRootEx
的 InternalQueryInterface 方法,查詢卸除類別上的介面。
CComCachedTearOffObject::Release
將參考計數遞減 1,如果參考計數為 0,則會刪除 CComCachedTearOffObject
物件。
STDMETHOD_(ULONG, Release)();
傳回值
在非偵錯組建中,一律會傳回 0。 在偵錯組建中,傳回可能對診斷或測試很有用的值。