CoCreateInstanceEx详解

本文详细介绍了CoCreateInstanceEx函数的用途、参数及其调用实例,阐述了如何利用该函数创建远程组件,以及参数说明和调用过程中的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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   ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值