Empfangen von Benachrichtigungen
OLE DB stellt Schnittstellen zum Empfangen von Benachrichtigungen bereit, wenn Ereignisse auftreten. Diese werden in OLE DB-Objektbenachrichtigungen in der OLE DB-Programmierreferenz beschrieben. Bei der Einrichtung dieser Ereignisse wird der standardmäßige COM-Verbindungspunktmechanismus verwendet. Beispielsweise implementiert ein ATL-Objekt, das Ereignisse über IRowsetNotify
die IRowsetNotify
Schnittstelle abrufen möchte, indem er der von der Klasse abgeleiteten Liste hinzufügt IRowsetNotify
und sie über ein COM_INTERFACE_ENTRY Makro verfügbar macht.
IRowsetNotify
verfügt über drei Methoden, die zu verschiedenen Zeiten aufgerufen werden können. Wenn Sie nur auf eine dieser Methoden reagieren möchten, können Sie die IRowsetNotifyImpl-Klasse verwenden, die E_NOTIMPL für die Methoden zurückgibt, die Sie nicht interessieren.
Wenn Sie das Rowset erstellen, müssen Sie dem Anbieter mitteilen, dass das zurückgegebene Rowset-Objekt unterstützt IConnectionPointContainer
werden soll, das zum Einrichten der Benachrichtigung erforderlich ist.
Der folgende Code zeigt, wie sie das Rowset aus einem ATL-Objekt öffnen und die AtlAdvise
Funktion zum Einrichten der Benachrichtigungssenke verwenden. AtlAdvise
gibt ein Cookie zurück, das beim Aufrufen AtlUnadvise
verwendet wird.
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IConnectionPointContainer, true);
Anschließend wird der folgende Code verwendet:
product.Open(session, _T("Products"), &propset);
AtlAdvise(product.m_spRowset, GetUnknown(), IID_IRowsetNotify, &m_dwCookie);