次の方法で共有


通知の受信

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);

関連項目

アクセサーの使用