プロバイダへのインターフェイスの追加
更新 : 2007 年 11 月
インターフェイスを追加するオブジェクト (通常は、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()