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+rclsidInprocServer32", "默认", 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);
    }
}



本文为博主原创文章,如需转载请说明转至http://www.cnblogs.com/organic/
原文地址:https://www.cnblogs.com/organic/p/5005657.html