佚名通过本文主要向大家介绍了dcom是什么,9955dcom最近十天更新,8844dcom更新后地址,dcom配置,9955dcom首页等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 请教:关于DCOM创建对象实例失败的问题?
描述:
客户端在本机运行,本机的IP是"10.167.206.51",服务器在另外一台机器上,IP就是上面代码中的"10.167.206.69",
现在有个问题是:执行CoCreateInstanceEx时失败了,返回的hr值是-2147023174。
如果服务器也在本机运行,把上面代码中的IP改成本机IP,就会执行成功。
请问在不同机器上面应该还需要设置些什么呢?或者说这个错误在哪里呢?
分不多了,希望各位大侠指教!
解决方案1:
描述:
写了一个简单的DCOM服务器程序和客户端程序,服务器程序中主要是提供了一个IChat接口和Chat对象,客户端得到这个IChat接口然后调用接口中的方法。客户端开始的代码如下:
HRESULT hr;
IChat *pChat;
IUnknown *pUnknown;
//组件库初始化
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(FAILED(hr)){
MessageBox("组件初始化失败!");
return FALSE;
}
//初始化安全设置
hr = CoInitializeSecurity(
NULL,-1, NULL,NULL,
RPC_C_AUTHN_LEVEL_DEFAULT,RPC_C_IMP_LEVEL_IDENTIFY,
NULL, 0, NULL);
if(FAILED(hr)){
MessageBox("初始化安全设置失败!");
return FALSE;
}
//创建对象实例,并返回IUnknown 指针
COSERVERINFO ServerInfo={0,L"10.167.206.69",NULL,0};
MULTI_QI MultiQi={&IID_IUnknown,NULL,NOERROR};
hr=CoCreateInstanceEx(CLSID_Chat,NULL,CLSCTX_REMOTE_SERVER,&ServerInfo,1,&MultiQi);
if(FAILED(hr)){
MessageBox("创建对象实例失败!");
return FALSE;
}
//通过IUnkonwn指针去查询接口指针,返回IChat指针
pUnknown = (IUnknown *) MultiQi.pItf;
hr = pUnknown->QueryInterface(IID_IChat,(void**)&pChat);
if(FAILED(hr)){
MessageBox("没有查找的接口指针!");
return FALSE;
}
客户端在本机运行,本机的IP是"10.167.206.51",服务器在另外一台机器上,IP就是上面代码中的"10.167.206.69",
现在有个问题是:执行CoCreateInstanceEx时失败了,返回的hr值是-2147023174。
如果服务器也在本机运行,把上面代码中的IP改成本机IP,就会执行成功。
请问在不同机器上面应该还需要设置些什么呢?或者说这个错误在哪里呢?
分不多了,希望各位大侠指教!
解决方案1:
对方机器的RPC服务没有开启吧
右键我的电脑 管理 服务 Remote Procedure Call (RPC) Locator 启动起来
Remote Procedure Call (RPC) 启动起来