次の方法で共有


プロバイダーへのインターフェイスの追加

インターフェイスを追加するオブジェクト (通常は、OLE DB プロバイダー ウィザードによって作成されたデータ ソース、行セット、コマンド、またはセッション オブジェクト) を決定します。 インターフェイスを追加する必要のあるオブジェクトをプロバイダーがサポートしていない場合があります。 その場合には、ATL OLE DB プロバイダー ウィザードを実行してオブジェクトを作成します。 [クラス ビュー] でプロジェクトを右クリックし、[追加] メニューの [クラスの追加] をクリックし、[ATL OLE DB プロバイダー] をクリックします。 別のディレクトリにインターフェイス コードを挿入し、プロバイダー プロジェクトにファイルをコピーできます。

インターフェイスをサポートするクラスを新規作成してある場合には、そのクラスからオブジェクトを継承させます。 たとえば、次のように IRowsetIndexImpl クラスを行セット オブジェクトに追加します。

template <class Creator>
class CAgentRowset : 
public CRowsetImpl< CAgentRowset<Creator>, CAgentMan, Creator>,
   public IRowsetIndexImpl< ... > 

COM_INTERFACE_ENTRY マクロを使用して、オブジェクトの COM_MAP にインターフェイスを追加します。 マップがない場合は、マップを作成します。 たとえば、次のようにします。

BEGIN_COM_MAP(CAgentRowset)
     COM_INTERFACE_ENTRY(IRowsetIndex)
END_COM_MAP()

行セット オブジェクトの場合には、親オブジェクトのマップをチェインして、オブジェクトが親クラスに処理を代行させることができるようにします。 この例では、COM_INTERFACE_ENTRY_CHAIN マクロをマップに追加します。

BEGIN_COM_MAP(CAgentRowset)
     COM_INTERFACE_ENTRY(IRowsetIndex)
     COM_INTERFACE_ENTRY_CHAIN(CRowsetImpl)
END_COM_MAP()

参照

概念

OLE DB プロバイダー テンプレートの操作