Реализация CComObjectRootEx

CComObjectRootEx имеет важное значение. Все объекты ATL должны иметь один экземпляр CComObjectRootEx или CComObjectRoot в их наследовании. CComObjectRootEx предоставляет механизм по умолчанию QueryInterface, основанный на записях сопоставления COM.

Посредством его сопоставления COM интерфейсы объекта предоставляются клиенту, когда он запрашивает интерфейс. Запрос выполняется с помощью CComObjectRootEx::InternalQueryInterface. InternalQueryInterface обрабатывает интерфейсы только в таблице сопоставлений COM.

Интерфейсы можно ввести в таблицу карты COM с помощью макроса COM_INTERFACE_ENTRY или одного из его вариантов. Например, следующий код вводит интерфейсы IDispatch, IBeeper и ISupportErrorInfo в таблицу сопоставлений COM:

BEGIN_COM_MAP(CBeeper)
   COM_INTERFACE_ENTRY(IBeeper)
   COM_INTERFACE_ENTRY(IDispatch)
   COM_INTERFACE_ENTRY_TEAR_OFF(IID_ISupportErrorInfo, CBeeper2)
END_COM_MAP()

См. также

Основы COM-объектов ATL
Макросы сопоставления COM