Для того, чтобы связаться с OLEDB провайдером нужно пройти несколько этапов и получить объект Session.
Для получения объекта данных необходимо вызвать функцию CoCreateInstance(). Эта функция вернет указатель на объект Data Source.
CoCreateInstance(CLSID_MailProvider, 0, CLSCTX_LOCAL_SERVER, IID_IDBInitialize, (void**) &pIDBInit);
Обратите внимание на то, что все объекты OLEDB провайдеров - это COM объекты и мы связываемся с OLEDB провайдером на основе его CLSID, который должен быть занесен в реестр. После создания объекта он находится в неинициалированном состоянии.
Пример.
// Step4OLEDB.cpp : Defines the entry point for the console application. // Step by Step Site // http://www.firststeps.ru // Kaev Artem 2000 #define INITGUID #define DBINITCONSTANTS #include "stdafx.h" #include "iostream.h" #include "oledb.h" // OLE DB файлы #include "oledberr.h" const GUID CLSID_MSDASQL = {0xC8B522CBL,0x5CF3,0x11CE,{0xAD,0xE5,0x00,0xAA,0x00,0x44,0x77,0x3D}}; void main() { // Инициализация COM if (FAILED( CoInitialize(NULL) )) { cout << "Unable to initialize COM" << endl; return; } IDBInitialize *pIDBInitialize = NULL; HRESULT hr; hr=CoCreateInstance(CLSID_MSDASQL,NULL,CLSCTX_INPROC_SERVER, IID_IDBInitialize,(void**)&pIDBInitialize); if (FAILED(hr)) { cout << "CoCreateInstance Failed" << endl; return; } pIDBInitialize->Release(); // Деинициализация COM CoUninitialize(); };
Для того, чтобы создать OLEDB провайдера необходимо запустить VC++ и создать новый проект на основе Console application.
GUID провайдера я взял из заголовочного файла для доступа OLEDB ODBC.