读书人

CoCreateInstance具体内部兑现

发布时间: 2012-11-26 11:48:49 作者: rapoo

CoCreateInstance具体内部实现

    CoGetClassObject(.....)    {     //通过查注册表CLSID_Object,得知组件DLL的位置、文件名     //装入DLL库     //使用函数GetProcAddress(...)得到DLL库中函数DllGetClassObject的函数指针。     //调用DllGetClassObject    }    /// DllGetClassObject是干什么的,它是用来获得类厂对象的。只有先得到类厂才能去创建组件.    /// 下面是DllGetClassObject的伪码:     DllGetClassObject(...)     {     //......     CFactory* pFactory= new CFactory; //类厂对象     pFactory->QueryInterface(IID_IClassFactory, (void**)&pClassFactory);     //查询IClassFactory指针     pFactory->Release();     //......     }    /// CoGetClassObject的流程已经到此为止,现在返回CoCreateInstance,看看CreateInstance的伪码:     CFactory::CreateInstance(.....)     {     //...........     CObject *pObject = new CObject; //组件对象     pObject->QueryInterface(IID_IUnknown, (void**)&pUnk);     pObject->Release();     //...........     } 

读书人网 >编程

热点推荐