プロバイダーへのインターフェイスの追加
Note
ATL OLE DB プロバイダー ウィザードは、Visual Studio 2019 以降では使用できません。
インターフェイスを追加するオブジェクトを決定します (通常は OLE DB プロバイダー ウィザードで作成されたデータ ソース、行セット、コマンド、またはセッション オブジェクトです)。 インターフェイスを追加する必要があるオブジェクトが、プロバイダーで現在サポートされていない可能性もあります。 その場合は、ATL OLE DB プロバイダー ウィザードを実行してオブジェクトを作成します。 クラス ビューでプロジェクトを右クリックし、メニューの [追加]>[新しい項目] をクリックします。[インストール済み]>[Visual C++]>[ATL] を選択したら、[ATL OLEDB プロバイダー] をクリックします。 インターフェイスのコードを別のディレクトリに配置し、そのファイルをプロバイダー プロジェクトにコピーすることもできます。
インターフェイスをサポートする新しいクラスを作成した場合は、オブジェクトがそのクラスから継承するようにします。 たとえば、次のようにクラス IRowsetIndexImpl を行セット オブジェクトに追加します。
template <class Creator>
class CCustomRowset :
public CRowsetImpl< CCustomRowset<Creator>, CCustomWindowsFile, Creator>,
public IRowsetIndexImpl< ... >
COM_INTERFACE_ENTRY マクロを使用して、オブジェクトの COM_MAP にインターフェイスを追加します。 マップがない場合は作成します。 次に例を示します。
BEGIN_COM_MAP(CCustomRowset)
COM_INTERFACE_ENTRY(IRowsetIndex)
END_COM_MAP()
行セット オブジェクトの場合、その親オブジェクトのマップを連結して、オブジェクトが親クラスに委任できるようにします。 この例では、COM_INTERFACE_ENTRY_CHAIN マクロをマップに追加します。
BEGIN_COM_MAP(CCustomRowset)
COM_INTERFACE_ENTRY(IRowsetIndex)
COM_INTERFACE_ENTRY_CHAIN(CRowsetImpl)
END_COM_MAP()