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);
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章