Получение уведомлений
OLE DB предоставляет интерфейсы для получения уведомлений при возникновении событий. Они описаны в разделе "Уведомления об объектах OLE DB" в справочнике программиста OLE DB. Настройка этих событий использует стандартный механизм точки подключения COM. Например, объект ATL, который хочет получить события через IRowsetNotify
реализацию IRowsetNotify
интерфейса, добавив IRowsetNotify
в список, производный от класса, и предоставляя его через макрос COM_INTERFACE_ENTRY.
IRowsetNotify
имеет три метода, которые можно вызывать в разное время. Если вы хотите ответить только на один из этих методов, можно использовать класс IRowsetNotifyImpl , который возвращает E_NOTIMPL для методов, которые вам не нужны.
При создании набора строк необходимо сообщить поставщику, что нужно, чтобы возвращаемый объект набора строк поддерживался IConnectionPointContainer
, что необходимо для настройки уведомления.
В следующем коде показано, как открыть набор строк из объекта ATL и использовать AtlAdvise
функцию для настройки приемника уведомлений. AtlAdvise
возвращает файл cookie, используемый при вызове AtlUnadvise
.
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IConnectionPointContainer, true);
Затем используется следующим кодом:
product.Open(session, _T("Products"), &propset);
AtlAdvise(product.m_spRowset, GetUnknown(), IID_IRowsetNotify, &m_dwCookie);