Добавление интерфейса в поставщик
Следует определить, в какой объект требуется добавить интерфейс (обычно это объект источника данных, набора строк, команды или сеанса, созданный мастером поставщика OLE DB). Возможно, объект, в который требуется добавить интерфейс, не поддерживается поставщиком. В этом случае для создания объекта необходимо запустить мастер поставщика OLE DB библиотеки ATL. Щелкните правой кнопкой мыши проект в представлении классов, выберите пункт Добавить класс в меню Добавить, а затем выберите пункт Поставщик OLEDB библиотеки ATL. Возможно, потребуется разместить код интерфейса в отдельном каталоге и затем скопировать файлы в проект поставщика.
Если создан новый класс для поддержки интерфейса, следует наследовать объект от этого класса. Например, можно добавить класс IRowsetIndexImpl в объект набора строк:
template <class Creator>
class CAgentRowset :
public CRowsetImpl< CAgentRowset<Creator>, CAgentMan, Creator>,
public IRowsetIndexImpl< ... >
Добавьте интерфейс в COM_MAP объекта с помощью макроса COM_INTERFACE_ENTRY. Если файл сопоставления отсутствует, его необходимо создать. Примеры.
BEGIN_COM_MAP(CAgentRowset)
COM_INTERFACE_ENTRY(IRowsetIndex)
END_COM_MAP()
Для объекта набора строк следует связать сопоставление родительского объекта, чтобы объект смог предоставить делегата для родительского класса. В этом примере добавьте макрос COM_INTERFACE_ENTRY_CHAIN в сопоставление:
BEGIN_COM_MAP(CAgentRowset)
COM_INTERFACE_ENTRY(IRowsetIndex)
COM_INTERFACE_ENTRY_CHAIN(CRowsetImpl)
END_COM_MAP()