Sdílet prostřednictvím


Třída CComObjectRootEx

Tato třída poskytuje metody zpracování objektu referenční počet řízení agregované i nonaggregated objektů.

template< 
   class ThreadModel  
> 
class CComObjectRootEx : public CComObjectRootBase

Parametry

Členy

Metody

CComObjectRootEx

Konstruktor.

InternalAddRef

Zvýší počet odkazů pro objekt nonaggregated.

InternalRelease

Sníží počet odkaz nonaggregated objektu.

Zámek

Pokud model podprocesu podprocesy, získá vlastnictví objektu kritický oddíl.

Odemknout

Pokud model podprocesu podprocesy, vydává vlastnictví objektu kritický oddíl.

Metody CComObjectRootBase

FinalConstruct

Přepsat ve své třídě provést libovolnou inicializaci vyžadované k objektu.

FinalRelease

Přepsat ve své třídě provádět jakékoli vyčištění vyžadované k objektu.

OuterAddRef

Zvýší počet odkazů pro agregovaný objekt.

OuterQueryInterface

Delegáti na vnější IUnknown agregované objektu.

OuterRelease

Sníží odkaz počítat rozvedených objektu.

Statická funkce

InternalQueryInterface

Deleguje na IUnknown nonaggregated objektu.

ObjectMain

Při inicializaci modulu a ukončení odvozených tříd uvedených v mapě objektu s názvem.

Datové členy

m_dwRef

S m_pOuterUnknown se část unie.Při objekt není agregované držet referenční počet AddRef a vydání.

m_pOuterUnknown

S m_dwRef se část unie.Používá, když je objekt agregovány do vnější neznámý podržením ukazatele.

Poznámky

CComObjectRootExzpracovává objekt referenční počet řízení agregované i nonaggregated objektů.Pokud objekt není právě agregované a obsahuje ukazatel na vnější neznámý Pokud shromažďovány objekt obsahuje referenční počet objektů.Agregované objektů CComObjectRootEx metody zpracování selhání vnitřní objekt k výstavbě a chránit vnější objekt z odstranění při vydání vnitřní rozhraní nebo vnitřní objekt je odstraněn.

Třída, která implementuje COM server musí dědit z CComObjectRootEx nebo CComObjectRoot.

Pokud vaše definice třídy určuje DECLARE_POLY_AGGREGATABLE makra ATL vytvoří instanci CComPolyObject <CYourClass> při IClassFactory::CreateInstance se nazývá.Během vytváření se kontroluje hodnotu vnější neznámý.Pokud je NULL, IUnknown je implementováno pro objekt nonaggregated.Pokud není vnější neznámý NULL, IUnknown je implementováno pro agregovaný objekt.

Pokud vaše třída neurčuje DECLARE_POLY_AGGREGATABLE makra ATL vytvoří instanci CAggComObject <CYourClass> agregované objekty nebo instanci CComObject <CYourClass> nonaggregated objektů.

Výhodou použití CComPolyObject je zabránit obě CComAggObject a CComObject v modulu pro zpracování případů souhrnné a nonaggregated.Jeden CComPolyObject objektu zpracovává obou případech.Pouze jednu kopii virtuální tabulka a jednu kopii funkce, proto existují v modulu.Pokud vaše virtuální tabulka je velký, to podstatně zmenšit velikost poštovní modul.Však pokud vaše virtuální tabulka je malá, pomocí CComPolyObject může vést k poněkud větší velikost modulu protože není optimalizována pro souhrnné nebo nonaggregated objektu, jako jsou CComAggObject a CComObject .

Pokud je objekt seskupeny, IUnknown je implementována CComAggObject nebo CComPolyObject .Přenést tyto třídy QueryInterface , AddRef , a vydání volání na CComObjectRootEx na OuterQueryInterface , OuterAddRef , a OuterRelease předat vnější neznámý.Obvykle je přepsat CComObjectRootEx::FinalConstruct ve své třídě vytvořit souhrnné objekty a přepsání CComObjectRootEx::FinalRelease uvolnit všechny agregované objekty.

Pokud není objekt seskupeny, IUnknown je implementována CComObject nebo CComPolyObject .V případě volání do QueryInterface , AddRef , a vydání jsou CComObjectRootEx na InternalQueryInterface , InternalAddRef , a InternalRelease provést vlastní operace.

Požadavky

Záhlaví: atlcom.h

Viz také

Referenční dokumentace

Třída CComAggObject

Třída CComObject

Třída CComPolyObject

Další zdroje

Přehled třídy ATL