CoCreateInstance调用COM接口伪流程

在编写组件程序时,经常会使用CoCreateInstance直接取COM组件的接口,非常方便,那CoCreateInstance到底干了些什么事呢?1、CoCreateInstance取COM组件的接口的基本流程


//参数:rclsid = 组件CLSID
//参数:riid = 接口ID
WINOLEAPI   CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, 
                             DWORD dwClsContext, REFIID riid, LPVOID FAR* ppICOMInterface)
{
        //根据组件的CLSID从注册表中取Dll的地址,并加载
        char        pszCOMDllPath;
        SHGetValue(HKEY_CLASSES_ROOT, "CLSID+rclsid\InprocServer32", "默认", pszCOMDllPath);
        LoadLibrary(pszCOMDllPath);

        //调用DllGetClassObject,创建IID_IClassFactory总接口
        IClassFactory* pIFactory;
        DllGetClassObject(rclsid, IID_IClassFactory, &pIFactory);
        {
             IClassFactory* pITotalFactory = new IClassFactory;
             pITotalFactory->QueryInterface(IID_IClassFactory, &pIFactory);
        }
        
        //调用CreateInstance创建COM总接口对象
        pIFactory->CreateInstance(pUnkOuter, riid, ppICOMInterface);
        {
             ICOMInterface* pITotalCOMInterface = new ITotalCOMInterface;
        
             //根据接口IID取指定接口对象
            pITotalCOMInterface->QueryInterface(riid, ppICOMInterface);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值