- This function creates on the local system a single uninitialized object of the class associated with a specified class identifier.
- 函数原型:
-
1 STDAPI CoCreateInstance(
2 REFCLSID rclsid, //创建的Com对象的类标识符(CLSID)
3 LPUNKNOWN pUnkOuter, //NULL or 指向聚合对象的IUnknown指针
4 DWORD dwClsContext, //运行可执行代码的上下文:CLSCTX_INPROC_SERVER
5 REFIID riid, //创建的Com对象的接口标识符
6 LPVOID * ppv //用来接收指向Com对象接口地址的指针变量
7 );
-
- 详细过程:
- 客户端程序调用CoCreateInstance(),传递CLSID、IID。
- COM库在注册表HKEY_CLASSES_ROOT\CLSID下查找CLSID(包含server 路径等注册信息)。
- COM库读取server DLL路径,并将其加载到客户进程空间(CLSCTX_INPROC_SERVER)。
- COM库调用DllGetClassObject()(此为server DLL导出函数),获取对应类厂。
- COM库调用类厂的CreateInstance()方法,创建客户程序请求的COM对象。
- CoCreateInstance()返回接口至客户端程序。