CComObjectRootEx é essencial — Tudo objetos ATL devem ter uma instância de CComObjectRootEx ou CComObjectRoot na sua herança. CComObjectRootEx fornece o mecanismo de QueryInterface padrão com base em entradas de mapa COM.
Através de seu mapa de COM, interfaces de um objeto são expostas a um cliente quando o cliente consulta para uma interface. A consulta é executada através de CComObjectRootEx::InternalQueryInterface. InternalQueryInterface apenas lida COM a tabela do mapa com as interfaces.
Você pode inserir interfaces na tabela COM mapa com a macro COM_INTERFACE_ENTRY ou uma de suas variantes. Por exemplo, o seguinte código do BEEPER exemplo insere as interfaces IDispatch, IBeepere ISupportErrorInfo em COM a tabela do mapa com as
BEGI&N_COM_MAP(CBeeper)
nbsp; COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IBeeper)
COM_INTERFACE_ENTRY_TEAR_OFF (IID_ISupportErrorInfo, CBeeper2)
END_COM_MAP)