Recibir notificaciones
OLE DB proporciona interfaces para recibir notificaciones cuando se producen eventos. Estas se describen en Notificaciones de objetos OLE DB en la Referencia del programador de OLE DB. La configuración de estos eventos usa el mecanismo de punto de conexión COM estándar. Por ejemplo, un objeto ATL que quiere recuperar eventos a través de IRowsetNotify
implementa la interfaz IRowsetNotify
agregando IRowsetNotify
a la lista derivada de la clase y exponiéndola a través de una macro COM_INTERFACE_ENTRY.
IRowsetNotify
tiene tres métodos, a los que se puede llamar en varias ocasiones. Si desea responder solo a uno de estos métodos, puede usar la clase IRowsetNotifyImpl, que devuelve E_NOTIMPL para los métodos que no le interesan.
Al crear el conjunto de filas, debe indicar al proveedor que desea que el objeto de conjunto de filas devuelto admita IConnectionPointContainer
, que se requiere para configurar la notificación.
En el código siguiente se muestra cómo abrir el conjunto de filas desde un objeto ATL y usar la función AtlAdvise
para configurar el receptor de notificaciones. AtlAdvise
devuelve una cookie que se usa cuando se llama a AtlUnadvise
.
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IConnectionPointContainer, true);
Luego, lo usa el código siguiente:
product.Open(session, _T("Products"), &propset);
AtlAdvise(product.m_spRowset, GetUnknown(), IID_IRowsetNotify, &m_dwCookie);