CoInitialize - ошибка, неверный указатель при pConn->Open(
От: Molot  
Дата: 28.03.12 13:51
Оценка:
CoInitialize — ошибка, видимо что-то с COM, "неверный указатель" при вызове pConn->Open(). Меняешь на CoInitializeEx — ошибка на одном компе ушла на другом нет. На обоих win xp. Ошибка возникает при вызове pConn->Open(). Не думаю что проблема с драйверами ado db

CoInitializeEx(NULL, COINIT_MULTITHREADED);
_bstr_t constr5(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\test.mdb");
_bstr_t constr6(L"");
_bstr_t constr7(L"");
try
{
pConn.CreateInstance( __uuidof(Connection));
pConn->Open(constr5, constr6, constr7, 0); // ОШИБКА возникает
}
catch(_com_error e)
{
PrintComError(e);
PrintProviderError(pConn);
}
Re: CoInitialize - ошибка, неверный указатель при pConn->Ope
От: AndrewJD США  
Дата: 28.03.12 14:08
Оценка:
Здравствуйте, Molot, Вы писали:

M>CoInitialize — ошибка, видимо что-то с COM, "неверный указатель" при вызове pConn->Open(). Меняешь на CoInitializeEx — ошибка на одном компе ушла на другом нет. На обоих win xp. Ошибка возникает при вызове pConn->Open(). Не думаю что проблема с драйверами ado db



а хотя бы номер ошибки написать?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[2]: CoInitialize - ошибка, неверный указатель при pConn->
От: pugv Россия  
Дата: 28.03.12 14:38
Оценка:
AJD>а хотя бы номер ошибки написать?

Судя по "неверный указатель", видимо 0x80004003 Invalid Pointer
Re: CoInitialize - ошибка, неверный указатель при pConn->Ope
От: Molot  
Дата: 28.03.12 15:50
Оценка:
ничего не понимаю, написал CoInitializeEx(), несколько раз перекомпилировал — работает вроде. Кто может доступно разъяснить в чем разница между Ex и просто CoInitialize? и как правильно?
Re: CoInitialize - ошибка, неверный указатель при pConn->Ope
От: Molot  
Дата: 28.03.12 17:03
Оценка:
ан нет, у знакомого не работает. блин, что за ошибка, как побороть?
Re[2]: CoInitialize - ошибка, неверный указатель при pConn->
От: pugv Россия  
Дата: 29.03.12 06:46
Оценка:
M> в чем разница между Ex и просто CoInitialize?

CoInitializeEx — функция более низкого уровня, позволяет указать, в какой тип апартамента нужно войти.
Для входа в MTA всего процесса — COINIT_MULTITHREADED, в STA — COINIT_APARTMENTTHREADED.
Поток, вызвавший CoInitializeEx с флагом COINIT_APARTMENTTHREADED выполняется в отдельном апартаменте, в который не могут входить другие потоки.
CoInitialize просто вызывает CoInitializeEx с флагом COINIT_APARTMENTTHREADED.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.