CoCreateInstance возвращает E_NOINTERFACE из службы COM (перезапуск службы исправляет это)

Время от времени реализованная мной COM-служба будет переходить в состояние, в котором мое клиентское приложение C ++ не сможет создать COM-объект из-за E_NOINTERFACE ошибка. Клиентское приложение — это однократный (непостоянный) .exe, который я часто запускаю.

Начнем с того, что служба COM будет работать нормально большую часть времени, но внезапно CoCreateInstance() начал бы возвращаться E_NOINTERFACE, Чтобы добавить к путанице, VBScript, который я написал, продолжает успешно работать и создает COM-объект без каких-либо проблем.

Если я перезапущу службу COM, все вернется в нормальное состояние, и мое приложение C ++ снова начнет работать.

Ниже приведены фрагменты C ++ и VBScript, которые я запускаю.

C ++

ISampleCom *MyComObj;
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);

// Create COM object
hr = CoCreateInstance(CLSID_SampleCom, 0, CLSCTX_LOCAL_SERVER, IID_ISampleCom, (void**)&MyComObj);
if(FAILED(hr))
printf("\r\nFailed to create COM object.");

VBScript

dim version
set mycomobj = CreateObject("MyCom.Sample")

mycomobj.GetVersion(version)

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]