Ricezione di notifiche
In OLE DB sono incluse le interfacce necessarie per ricevere notifiche in corrispondenza di determinati eventi.Per ulteriori informazioni, vedere OLE DB Object Notifications in OLE DB Programmer's Reference (Platform SDK) (informazioni in lingua inglese).Per la configurazione di questi eventi viene utilizzato il meccanismo dei punti di connessione COM standard.Un oggetto ATL che, ad esempio, debba recuperare degli eventi tramite IRowsetNotify implementa l'interfaccia IRowsetNotify aggiungendo IRowsetNotify all'elenco derivato dalla classe ed esponendo tale interfaccia attraverso una macro COM_INTERFACE_ENTRY.
IRowsetNotify prevede tre metodi, che è possibile chiamare in situazioni diverse.Se si desidera rispondere a uno solo di questi metodi, è possibile utilizzare la classe IRowsetNotifyImpl, che restituisce E_NOTIMPL per i metodi non desiderati.
Quando si crea il rowset, è necessario indicare al provider che si desidera che l'oggetto rowset restituito supporti la classe IConnectionPointContainer, necessaria per impostare la notifica.
Nel codice riportato di seguito viene mostrato come aprire il rowset da un oggetto ATL e utilizzare la funzione AtlAdvise per impostare il sink di notifica.AtlAdvise restituisce un cookie utilizzato per la chiamata a 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);