Implementieren von CComObjectRootEx
CComObjectRootEx ist unerlässlich. Alle ATL-Objekte müssen eine Instanz oder CComObjectRootEx
CComObjectRoot in ihrer Vererbung haben. CComObjectRootEx
stellt den Standardmechanismus QueryInterface
basierend auf COM-Zuordnungseinträgen bereit.
Über die COM-Zuordnung sind die Schnittstellen eines Objekts für einen Client verfügbar, wenn der Client nach einer Schnittstelle fragt. Die Abfrage wird mittels CComObjectRootEx::InternalQueryInterface
durchgeführt. InternalQueryInterface
behandelt nur Schnittstellen in der COM-Zuordnungstabelle.
Sie können Schnittstellen in die COM-Kartentabelle mit dem COM_INTERFACE_ENTRY Makro oder einer der zugehörigen Varianten eingeben. Mit dem folgenden Code werden beispielsweise die Schnittstellen IDispatch
, IBeeper
und ISupportErrorInfo
in die COM-Zuordnungstabelle eingegeben:
BEGIN_COM_MAP(CBeeper)
COM_INTERFACE_ENTRY(IBeeper)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY_TEAR_OFF(IID_ISupportErrorInfo, CBeeper2)
END_COM_MAP()