CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  ATL/ActiveX/COM

COM调用成功,DCOM调用失败,请大虾指点迷津

楼主entaoyang(entaoyang)2005-04-12 11:58:28 在 VC/MFC / ATL/ActiveX/COM 提问

小弟最近在学习COM,费九牛二虎之力知道了点老虎皮毛。昨天在做DCOM时又遇到拦路虎,请各位大虾帮忙。  
          工程类型Service   (Exe)类型,我在其中加了一个接口IGetHost,为改接口添加了一个方法GetComputerName(BSTR*   bs)。我用CoCreateInstance能调用成功,显示了"soft5"---我的计算机名,COM调用成功。用CreateInstanceEx调用则每次都不能成功创建实例(我已经注册了代理存根,在DCOMCNFG中设置了身份验证为“无”,设置了“在此计算机上运行”和“在以下计算机上运行192.168.0.5”),DCOM调用失败。  
   
          COM调用的代码省略了,以下是DCOM客户端调用的代码:  
   
          我在stdafx.h文件中定义了   _WIN32_DCOM  
          #define   _WIN32_DCOM  
   
          COM服务器接口是这样的:  
  接口:IGetHost  
  方法:GetComputerName(BSTR*   bs);//得到主机名称  
   
          调用DCOM的代码是这样的:  
  HRESULT   hr;  
  hr=CoInitializeEx(NULL,COINIT_MULTITHREADED);  
  if(FAILED(hr))  
  {  
  MessageBox(_T("CoInitializeEx   Failed"));  
  return   ;  
  }  
          // hr=CoInitializeSecurity(NULL,-       1,NULL,NULL,RPC_C_AUTHN_LEVEL_NONE,RPC_C_IMP_LEVEL_IMPERSONATE,NULL,EOAC_NONE,NULL);  
   
  COAUTHINFO   info;  
  COSERVERINFO   cs;  
  memset(&info,0,sizeof(info));  
  memset(&cs,0,sizeof(cs));  
  cs.dwReserved1=0;  
  cs.dwReserved2=0;  
  cs.pAuthInfo=&info;  
  cs.pwszName=LPWSTR("192.168.0.5");//远程计算机  
   
  MULTI_QI   qi[1];  
  memset(&(qi[0]),0,sizeof(qi[0]));  
  qi[0].pIID=&IID_IGetHost;  
   
  CoCreateInstanceEx(CLSID_GetHost,NULL,CLSCTX_SERVER,&cs,1,qi);  
  hr=qi[0].hr;  
  if(FAILED(hr))  
  {  
  MessageBox(_T("CoCreateInstanceEx   Failed"));//每次都执行到这里,也就是失败了  
  CoUninitialize();  
  return   ;  
  }  
  IGetHost   *pI=NULL;  
  pI=(IGetHost*)qi[0].pItf;  
  BSTR   bs;  
  hr=pI->GetComputerName(&bs);  
  if(FAILED(hr))  
  {  
  pI->Release();  
  CoUninitialize();  
  return;  
  }  
  _bstr_t   str(bs);  
  MessageBox((LPCTSTR)str);  
  pI->Release();  
  CoUninitialize();  
  return;  
   
   
  另外,那位大虾有时间发给小弟一个简单的DCOM程序供小弟学习之用,不胜感激!邮箱:entaoyang@163.com 问题点数:100、回复次数:14Top

1 楼nelsonc(软件兔)回复于 2005-04-12 17:36:10 得分 10

两台电脑在同一个域(domain)或信任的域里才会成功,具体原因不清楚。Top

2 楼sinall()回复于 2005-04-12 18:02:06 得分 20

^_^,前两天刚化大力气搞定了DCOM配置。  
  收集资料如下:  
  http://community.csdn.net/Expert/topic/3659/3659650.xml?temp=.5582392  
  http://www.livejournal.com/users/hanson2010/103257.html  
  http://program.tommsoft.com/bbs/reannounce.asp?boardid=3&rootid=15709&id=15710&reply=true  
  http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=1156  
  http://www.cnblogs.com/77543/archive/2005/01/12/90915.html  
  http://www.sou3w.com/database13/database225554.htm  
  http://community.csdn.net/Expert/topic/3659/3659650.xml?temp=.5582392  
   
  此外,把错误返回的值到MSDN里查查,到底是什么问题引起的。Top

3 楼ExtUSA(兵者)回复于 2005-04-12 18:52:10 得分 0

还学dcom啊,早被淘汰的技术了呀Top

4 楼entaoyang(entaoyang)回复于 2005-04-13 12:22:20 得分 0

我手里的项目需要一个管理磁盘阵列的服务器程序,该程序要读取未经过格式化的含有MPEG1格式的磁盘(我用系统API函数CreateFile来读取的),每一个磁盘阵列服务器有12个磁盘,共有4个服务器。每一个客户端都被要求能读取任意一个服务器的任意盘上的信息。因此我想写个NT下的服务组件来解决,想到了DCOM。---用SOCKET很费劲的,Java我不熟悉,不知道java是否能完成类似的功能。Top

5 楼adamx(爱吃苹果的小草莓)回复于 2005-04-13 13:47:46 得分 20

http://www.codeproject.com/com/clientserverwithdcom.asp  
  这个因该对你有帮助。Top

6 楼alaisalaix(天上人间)回复于 2005-04-13 14:00:14 得分 20

谁说DCOM要被淘汰了,当前的技术发展眼花缭乱,不要被冲昏了头。今天出了个.net框架,立马就转向.net,明天出了个G#,又改用G#。对于我们从事技术工作的IT人来说,没有什么过时的技术。我现在回过头还在搞8086和80386保护模式编程呢。COM/DCOM是windows的核心,如果掌握好了,对于你理解操作系统业务流程非常有帮助的。.net框架其实还是搭建在windows的COM/DCOM之上的,他现在摆脱不了COM/DCOM,除非出新的操作系统;COM是一种中间件技术,采用了CORBAR中的很多思想,很值得学习。这并不是说我们不要去学习最新的技术,而是在学习新技术的同时,要知道为什么会有这种技术出现,他跟以前技术之间的关系以及它们之间的过渡等等。说得太多了,脱离了搂主的话题,只是想借此批判那些过于浮躁的人。Top

7 楼alaisalaix(天上人间)回复于 2005-04-13 14:05:33 得分 10

关于com的讨论,我建了一个群9461821,欢迎加入Top

8 楼a123a123()回复于 2005-04-13 14:12:07 得分 0

高     薪     诚     聘     V     C     +     +     精     英      
   
  软     媒     (     深     圳     )     成   立   于   二   零   零   二   年   五   月   。由   新   加   坡   私人   投   资   基   金   注   资   。  
   
  软     媒     的     业     务     ,专     注     于     软     件     的“现     场   开   发   工   具”,持   续   的   挖   掘   用   户   使   用   软   件   的   核   心   利   益   。  
   
  软   媒   堪   称   深   圳   第   一   大   软   件   军   团,集   结   了   一   大   批   专   兼   职V   C   +   +   软   件   业   界   精   英   。  
   
  软   媒   对   于   核   心   技   术   人   员   ,采   取   “   四   高   ”   的   管   理   政   策   。  
   
  (   一   )   高   薪  
  “   永   远   让   薪   水   跑   在   能   力   前   面   ”   是   软   媒   的   座   右   铭   。  
   
  (   二   )   高   技   术  
  软   媒   公   司   内   部   针   工   具   型   软   件   研   发   ,形   成   自   主   产   权   的   系列   软   件   架   构   。  
     
  (   三   )   高   手   军   团  
  软   媒   的   每   个   高   级   工   程   师   ,   都   是   身   手   不   凡   的   业   界   精   英   ,   形   成   了   浓   厚   的   高   科   技   氛   围   。  
   
  (   四   )   高   素   质   用   户   群  
  “   一   个   软   件   离   开   了   它   的   用   户   就   是   垃   圾”   并   不   过   分   ,软   媒   提   供   了   7   *   2   4   小   时   的   在   线   用   户   群   引   导   软   件   的   需   求   。  
   
   
          产   品   介   绍          
   
  <     系   列   软   件   研   发   工   具     >  
  让   九   亿   农     民   兄   弟   都   能   开   发   出   自   己   喜   爱   的   软   件   。      
   
  提   示   :   凡   符   合   本   职   位   要   求   者     ,   可   以   直   接   来   面   试   无   须   投   放   简   历   。  
   
    要   求   :   精   通   标   准   C   \   C   +   +   结   构   化   程   序   设   计   。  
    1   、   要   求   有   V   C   +   +   软   件   开   发   经   验   。  
    2   、   精   通   W   i   n   d   o   w   s   界   面   开   发   ,   熟   练   使   用   C   D   C   绘   图   类   。  
    3   、   具   有   良   好   的   独   立   开   发   能   力   和   自   主   开   发   能   力   。  
    4   、   有   工   具   型   软   件   开   发   经   验   者   优   先   。  
   
    工   作   职   责   :  
    1   、   开   发   工   具   软   件   及   其   构   件   。  
    2   、   独   立   自   主   设   计   工   具   使   用   流   程   。  
    3   、   一   切   设   计   都   基   于   用   户   需   求   。  
    4   、   不   需   要   团   队   开   发   经   验   。  
    5   、   要   求   有   良   好   的   用   户   需   求   实   现   能   力   。  
   
    基   本   工   资   :  
    1   、   高   级   软   件   工   程   师   :   9   ,   0   0   0   元   /   月  
   
    联   系   方   式   :     R   i   c   h   m   a   i   n   @   d   u   o   s   o   f   t   .   c   n  
   
  http://www.jobsdb.com.cn/main/jobseeker/JobTemplates/Default/CN/JobDetail.asp?CompanyID=109434&JobPostID=3178881&FromFlag=&Language=CN&Page=1   &   T   e   m   p   l   a   t   e   I   D   =   D   e   f   a   u   l   t  
  Top

9 楼leonheartlee(Leon)回复于 2005-04-14 05:09:17 得分 0

我也遇到和楼主一样的问题  
  非常的不解   在本机上就使用正常  
  只要在不同的计算机上就会无法连接  
  防火墙都已经关掉  
  而且所有的设置都按照资料上给的去做了    
  郁闷阿Top

10 楼leonheartlee(Leon)回复于 2005-04-14 05:19:14 得分 0

还有阿   建立DCOM程序的时候,类型EXE可执行文件和SERVICE有什么区别阿?  
  能不能请哪位高手讲一下Top

11 楼ExtUSA(兵者)回复于 2005-04-14 09:59:22 得分 0

你的服务器是跑都是的都是Windows   2000吗?  
  Top

12 楼entaoyang(entaoyang)回复于 2005-04-14 18:35:45 得分 0

我的服务器是Win2003ServerTop

13 楼sursure(答案)回复于 2005-04-14 22:28:40 得分 0

支持一下~~~Top

14 楼adamx(爱吃苹果的小草莓)回复于 2005-04-15 09:52:44 得分 20

void   CServiceModule::Run()  
  {  
          _Module.dwThreadID   =   GetCurrentThreadId();  
   
          //This   means   that   calls   come   in   on   a   random   RPC   thread  
          HRESULT   hr   =   CoInitializeEx(NULL,   COINIT_MULTITHREADED);  
   
          //   This   provides   a   NULL   DACL   which   will   allow   access   to   everyone.  
          hr   =   CoInitializeSecurity(   0,   -1,   0,   0,    
                    RPC_C_AUTHN_LEVEL_NONE,    
                    RPC_C_IMP_LEVEL_IDENTIFY,   0,   0,   0   );  
          hr   =   _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER   |    
                    CLSCTX_REMOTE_SERVER,   REGCLS_MULTIPLEUSE);  
  Top

相关问题

  • 指点迷津
  • 指点迷津
  • 望指点迷津
  • 各位高手!我想多了解TAPI方面的知识,尤其是VB调用方面的,请指点迷津,不胜感激
  • 请高手指点迷津.
  • 高手指点迷津!!!!!
  • 请高手指点迷津
  • 请各位指点迷津!!
  • 高手请指点迷津...
  • 请各位指点迷津

关键词

  • .net
  • .net框架
  • win32
  • hr
  • 服务器
  • 接口
  • 计算机
  • 技术
  • 代码
  • 学习

得分解答快速导航

  • 帖主:entaoyang
  • nelsonc
  • sinall
  • adamx
  • alaisalaix
  • alaisalaix
  • adamx

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo