通知の受信
OLE DB では、イベント発生時に通知を受信するためのインターフェイスを用意しています。 これらのインターフェイスについては、『OLE DB Programmer's Reference』の「Chapter 12: OLE DB Object Notifications」を参照してください。 これらのイベントのセットアップでは、標準の COM コネクション ポイント機構を使用します。 たとえば、IRowsetNotify を通じてイベントを取得する ATL オブジェクトは、クラスから派生した一覧に IRowsetNotify を追加し、これを COM_INTERFACE_ENTRY マクロを通じて公開することで、IRowsetNotify インターフェイスを実装します。
IRowsetNotify には、さまざまな時点で呼び出すことができる 3 つのメソッドがあります。 これらのメソッドの 1 つに対してだけ応答する場合は、IRowsetNotifyImpl クラスを使用します。このクラスは、関係のないメソッドに対しては E_NOTIMPL を返します。
行セットを作成するときは、返された行セット オブジェクトで IConnectionPointContainer をサポートすることをプロバイダーに通知する必要があります。これは通知のセットアップに必要です。
ATL オブジェクトから行セットを開き、AtlAdvise 関数を使用して通知シンクをセットアップする方法を次のコード例に示します。 AtlAdvise は、AtlUnadvise を呼び出したときに使用される Cookie を返します。
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IConnectionPointContainer, true);
product.Open(session, _T("Products"), &propset);
AtlAdvise(product.m_spRowset, GetUnknown(), IID_IRowsetNotify, &m_dwCookie);