CoCreateInstance从COM服务返回E_NOINTERFACE(服务重启修复它)

时间:2013-10-03 19:52:23

标签: c++ com vbscript out-of-process

有一段时间,我实现的COM服务将进入一种状态,我的C ++客户端应用程序将因E_NOINTERFACE错误而无法创建COM对象。客户端应用程序是我经常运行的一次性运行(非持久性).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 个答案:

没有答案