(Available in 01 TS COM - TS_COM_IAggregationInternals)




To support aggregation, the COM server must support access to some internal methods ( InternalQueryInterface, InternalAddRef and InternalRelease ). To make aggregation posible the 'TS_IUnknown' class exports a interface called 'TS_IAggregationInternals', this interface can be requested and the used to call these internal methods. Use 'TS_GUID_IAggregationInternals()' when the applications needs to the 'TS_IAggregationInternals' interface.

MSDN:Aggregate object

A COM object that is made up of one or more other COM objects. One object in the aggregate is designated the controlling object, which controls which interfaces in the aggregate are exposed and which are private. This controlling object has a special implementation of IUnknown called the controlling IUnknown. All objects in the aggregate must pass calls to IUnknown methods through the controlling IUnknown.


A composition technique for implementing COM objects. It allows you to build a new object by reusing one or more existing objects' interface implementations. The aggregate object chooses which interfaces to expose to clients, and the interfaces are exposed as if they were implemented by the aggregate object. Clients of the aggregate object communicate only with the aggregate object.

MSDN:Object Reusability

When needing detailed information about aggregation see 'Object Reusability' in the MSDN documantation.

HRESULT QueryInterface( [in] REFIID riid, [out, iid_is(riid)] void **ppvObject);

ULONG AddRef();

ULONG Release();

HRESULT InternalQueryInterface( [in] REFIID riid, [out, iid_is(riid)] void **ppvObject);

ULONG InternalAddRef();

ULONG InternalRelease();

HRESULT InternalGetTypeInfoCount( [out] UINT * pctinfo );

HRESULT InternalGetTypeInfo( [in] UINT iTInfo, [in] LCID lcid, [out] ITypeInfo ** ppTInfo );

HRESULT InternalGetIDsOfNames( [in] REFIID riid, [in, size_is(cNames)] LPOLESTR * rgszNames, [in] UINT cNames, [in] LCID lcid, [out, size_is(cNames)] DISPID * rgDispId );

HRESULT InternalInvoke( [in] DISPID dispIdMember, [in] REFIID riid, [in] LCID lcid, [in] WORD wFlags, [in, out] DISPPARAMS * pDispParams, [out] VARIANT * pVarResult, [out] EXCEPINFO * pExcepInfo, [out] UINT * puArgErr );

Inherits from



CLASS TS_IAggregationInternals INHERIT TS_IUnknown
   DECLARE METHOD InternalQueryInterface
   DECLARE METHOD InternalAddRef
   DECLARE METHOD InternalRelease
   DECLARE METHOD InternalGetTypeInfoCount
   DECLARE METHOD InternalGetTypeInfo
   DECLARE METHOD InternalGetIDsOfNames
   DECLARE METHOD InternalInvoke