CoCreateInstanceEx函数使用

转载 2015年07月10日 16:13:02

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   ; 

CoCreateInstance的用法
CoCreateInstance
HRESULT __stdcall CoCreateInstance(
    const CLSID& clsid,
    IUnknown* pIUnknownOuter,
    DWORD dwClsContext,
    const IID& iid,
    void** ppw
    );

dwClsContext值:

CLSCTX_INPROC_SERVER
 客户希望创建在同一进和中运行的组件。为能够同客户在同一进程中运行,组件必须
是在DLL中实现的。
CLSCTX_INPROC_HANDLER
客户希望创建进程中处理器。一个进程中处理器实际上是一个只实现了某个组件一部分的
进程中组件。该组件的其他部分将由本地或远程服务器上的某个进程外组件实现。
CLSCTX_LOCAL_SERVER
客户希望创建一个在同一机器上的另外一个进程中运行的组件。本地服务器由EXE实现的。

CLSCTX_REMOTE_SERVER
客户希望创建一个在远程机器上运行的组件。此标志需要分布式COM正常工作。

(转)CoCreateInstanceEx使用详解

CoCreateInstanceEx常用于创建远程组件,因为考虑到远程访问时要在网络上来回传递信息,所以此函数允许一次询多个接口。 CoCreateInstanceEx参数说明 共有如下六个参数,...

osg回调函数的使用

  • 2017年12月15日 11:14
  • 29.68MB
  • 下载

STM32函数库使用手册

  • 2017年11月30日 11:54
  • 2.24MB
  • 下载

[转]SQL分组查询及聚集函数的使用

原文:http://www.cnblogs.com/doit8791/archive/2012/07/24/2607439.html 今天要做一个查询统计功能,一开始有点犯难,上午尝试大半天才写出...

CodeIgniter辅助函数和类库的使用

  • 2016年11月04日 14:22
  • 406KB
  • 下载

c++中pow 与sqrt函数使用指南

分类: c++(5)  菜鸟之伤(1)  版权声明:本文为博主原创文章,未经博主允许不得转载。 在做HDOJ2045不容易系列之(3)—— LELE的RPG难题的时候,发现规律为 F(n...
  • VayaWu
  • VayaWu
  • 2016年07月22日 14:21
  • 2168

JS中数学函数的使用

  • 2017年03月24日 16:28
  • 65KB
  • 下载

PowerCenter 函数功能使用指南

  • 2016年09月12日 22:21
  • 2.09MB
  • 下载

数据格式(Printf函数的使用方法)

Printf函数的使用方法 printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出 信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:       pr...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CoCreateInstanceEx函数使用
举报原因:
原因补充:

(最多只允许输入30个字)