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 ответов

Другие вопросы по тегам