终于调用成功了。不过这个成功来的好晚。
一周前我就在折腾这个问题,当时碰到问题在网上查了很多资料,甚至把dcomcnfg里自己觉得可能影响调用的安全认证全关了,还是不行,因当时有事忙别的,今天想起来这事继续较劲,终于成功了。
之前不成功有两点:
COSERVERINFO serInfo; serInfo.dwReserved1 = 0; serInfo.dwReserved2 = 0; serInfo.pAuthInfo = NULL; serInfo.pwszName = L"192.168.0.70"; MULTI_QI qiData[1]; memset(qiData,0,sizeof(MULTI_QI)); //第一次不成功,少了这行 qiData[0].pIID = &IID_ICalcSvr; hr = CoCreateInstanceEx(/*对应CLSID*/CLSID_CalcSvr,NULL,CLSCTX_SERVER,&serInfo,1,qiData);
第一点是没有对MULTI_QI的[in]参数处理,结果函数抱怨说参数不对(E_INVALIDARG)。
第二次函数抱怨说没有注册接口(hr = 0x80040155 没有注册接口 ),这个用com对应的ps动态链接库文件(.dll)注册一下就搞定了。
regsvr32 bluedcomtestps.dll
com服务所在的机器是win2000server,我把对应com认证设置成了无(只改了这个)。当时碰到问题的时候网上说在xp系统下默认设置可能不行,我还没在其他系统上试过,回头要是有发现的话再说。