Recebendo notificações
O OLE DB fornece interfaces para receber notificações quando ocorrem eventos. Elas são descritas em Notificações de Objeto OLE DB na Referência do Programador OLE DB. A instalação desses eventos usa o mecanismo de ponto de conexão COM padrão. Por exemplo, um objeto ATL que deseja recuperar eventos por meio de IRowsetNotify
implementa a interface IRowsetNotify
adicionando IRowsetNotify
à lista derivada de classe e expondo-a por meio de uma macro COM_INTERFACE_ENTRY.
IRowsetNotify
tem três métodos, que podem ser chamados em vários momentos. Se você quiser responder a apenas um desses métodos, poderá usar a classe IRowsetNotifyImpl, que retorna E_NOTIMPL para os métodos nos quais não está interessado.
Ao criar o conjunto de linhas, você deve informar ao provedor que deseja que o objeto de conjunto de linhas retornado dê suporte a IConnectionPointContainer
, que é necessário para configurar a notificação.
O código a seguir mostra como abrir o conjunto de linhas de um objeto ATL e usar a função AtlAdvise
para configurar o coletor de notificação. AtlAdvise
retorna um cookie que é usado quando você chama AtlUnadvise
.
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IConnectionPointContainer, true);
Depois, usado pelo seguinte código:
product.Open(session, _T("Products"), &propset);
AtlAdvise(product.m_spRowset, GetUnknown(), IID_IRowsetNotify, &m_dwCookie);