CoCreateInstanceEx详解

发布时间:2017-1-16 18:38:50 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"CoCreateInstanceEx详解",主要涉及到CoCreateInstanceEx详解方面的内容,对于CoCreateInstanceEx详解感兴趣的同学可以参考一下。

CoCreateInstanceEx常用于创建远程组件,因为考虑到远程访问时要在网络上来回传递信息,所以此函数允许一次询多个接口。  CoCreateInstanceEx参数说明  共有如下六个参数,分别为:  REFCLSID   rclsid:指定要实例化COM组件的GUID  IUnknown   *punkOuter:  DWORD   dwClsCtx:指定服务器组件的类型,可以为以下值:  CLSCTX_INPROC_SERVER:指明组件与客户端程序运行在同一进程中,组件服务器是一个DLL。如果组件远行在远和计算机上,将在本地启动一个代理服务器程序或代理。  CLSTX_INPROC_HANDLER:指明组件是一个远程的,但有本地客户羰程序的类结构的实现。  CLSCTX_LOCAL_SERVER:指明服务器程序是一个本地的可执行文件;因此,运行在一个单独的里程中。  CLSCTX_REMOTE_SERVER:指明组件服务器运行在不同的远程计算机上,组件是在远程计算机上创建和管理的。  COSERVERINFO   *pServerInfo:指明服务器信息,它为一个结构,定义如下:  typedef   struct     _COSERVERINFO  {      DWORD   dwReserved1; //保留      LPWSTR   pwszName; //指定远程计算机名      COAUTHINFO     *pAuthInfo; //      DWORD   dwReserved2; //保留  }   COSERVERINFO;       ULONG   cmq:指明要查询接口的个数。  MULTI_QI   *pResults:用于接收查询到的接口,可以为数组,以接收多个接口。  2.2.2. CoCreateInstanceEx调用实例:  HRESULT   hr   ;  COSERVERINFO   si   ;  MULTI_QI   mqi   [2]   ;  WCHAR*   wServerName   =   L "192.168.0.1 ";  TCHAR   szBuffer[512];  ICM* pICM   =   NULL;  ICA* pICA   =   NULL;  ::ZeroMemory(&szBuffer,   512);  si.pwszName   =   wServerName   ;  si.dwReserved1   =   0   ;  si.pAuthInfo   =   NULL   ;  si.dwReserved2   =   0;  mqi   [0].pIID   =   &IID_ICM   ;  mqi   [0].pItf   =   NULL   ;  mqi   [0].hr   =   0   ;  mqi   [1].pIID   =   &IID_ICA;  mqi   [1].pItf   =   NULL   ;  mqi   [1].hr   =   0   ;  hr   =   CoCreateInstanceEx   (      CLSID_Account,      NULL,      CLSCTX_LOCAL_SERVER,      &si,      2,      mqi)   ;  if   (hr   !=   S_OK)  {      ::MessageBox(m_hWnd,   “组件实例化失败!”,   "错误 ",   MB_ICONSTOP)   ;      return   FALSE;  }  pICM   =   (ICM*)   mqi[0].pItf   ;  pICA   =   (ICA*)   mqi[1].pItf   ;

上一篇:POJ 1552 Doubles
下一篇:js获取当前Url网址路径及参数(转)

相关文章

相关评论