Freigeben über


Empfangen von Benachrichtigungen

OLE DB bietet Schnittstellen zum Empfang von Benachrichtigungen, wenn Ereignisse auftreten. Eine Beschreibung finden Sie unter OLE DB-Objektbenachrichtigungen in der OLE-Programmierreferenz. Das Setup dieser Ereignisse verwendet den standardmäßigen COM-Verbindungspunktmechanismus. Ein ATL-Objekt, das Ereignisse über IRowsetNotify abrufen möchte, implementiert beispielsweise die IRowsetNotify-Schnittstelle, indem IRowsetNotify zu der aus Klassen abgeleiteten Liste hinzugefügt und mit einem COM_INTERFACE_ENTRY-Makro offen gelegt wird.

IRowsetNotify besitzt 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, an denen Sie nicht interessiert sind.

Wenn Sie das Rowset erstellen, müssen Sie dem Anbieter mitteilen, dass das zurückgegebene Rowset-Objekt IConnectionPointContainer unterstützen soll. Dies ist notwendig, um die Benachrichtigung einzurichten.

Im folgenden Code wird dargestellt, wie Sie ein Rowset über ein ATL-Objekt öffnen und anschließend die AtlAdvise-Funktion verwenden, um die Benachrichtigungssenke einzurichten. AtlAdvise gibt ein Cookie zurück, das beim Aufruf von AtlUnadvise verwendet wird.

CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IConnectionPointContainer, true);

product.Open(session, _T("Products"), &propset);

AtlAdvise(product.m_spRowset, GetUnknown(), IID_IRowsetNotify, &m_dwCookie);

Siehe auch

Konzepte

Verwenden von Accessoren