CComObjectRootEx важно — все объекты ATL должны иметь один экземпляр CComObjectRootEx или CComObjectRoot в их наследования. CComObjectRootEx обеспечивает механизм QueryInterface по умолчанию, основанные на COM записей карты.
Его сопоставлением COM интерфейсы объекта подвергаются клиента когда клиент запрашивает для интерфейса. Запрос выполняется через CComObjectRootEx::InternalQueryInterface. InternalQueryInterface обрабатывает только интерфейсы в таблице карта COM.
Интерфейсы можно ввести в таблицу карту COM с COM_INTERFACE_ENTRY макрос или один из его вариантов. Например, следующий код из образец BEEPER входит интерфейс IDispatch, IBeeperи ISupportErrorInfo в таблицу карта COM
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)