Возникла такая проблема:
Есть ocx, я его импортирую таким образом:
#import "..\lib\avimaker.ocx" no_namespace named_guids raw_dispinterfaces raw_native_types
Далее, я делаю так:
//В одном потоке
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
//В другом потоке
MULTI_QI mq[2];
mq[0].hr = mq[1].hr = 0;
mq[0].pIID = &IID_IUnknown;
mq[1].pIID = &DIID__DAviMaker;
mq[0].pItf = mq[1].pItf = NULL;
HRESULT hr = CoCreateInstanceEx(CLSID_AviMaker, NULL, CLSCTX_ALL, NULL, 2, mq);
if((hr != 0) || (mq[0].hr != 0) || (mq[1].hr != 0) || (NULL == mq[0].pItf) || (NULL == mq[1].pItf))
{
m_sExecutionError = _bstr_t("CFragmentFileToProcess::ExecuteProcessing#1.1 CoCreateInstance failed: ") +
_bstr_t(_com_error(hr).ErrorMessage());
return false;
}
m_pUnknwn = mq[0].pItf;
m_AMaker = (_DAviMaker*)mq[1].pItf;
hr = m_AMaker->raw_AboutBox();
hr в результате вызова AboutBox содержит E_UNEXPECTED.
С чем это может быть связано?