通知の受信
OLE DB には、イベントの発生時に通知を受信するためのインターフェイスが用意されています。 これらの詳細については、「OLE DB プログラマーズ リファレンス」の「OLE DB オブジェクト通知」で説明されています。 これらのイベントのセットアップでは、標準の 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);