COM(一)CoCreateInstance

  • 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   );
  • 详细过程:
    1. 客户端程序调用CoCreateInstance(),传递CLSID、IID。
    2. COM库在注册表HKEY_CLASSES_ROOT\CLSID下查找CLSID(包含server 路径等注册信息)。
    3. COM库读取server DLL路径,并将其加载到客户进程空间(CLSCTX_INPROC_SERVER)。
    4. COM库调用DllGetClassObject()(此为server DLL导出函数),获取对应类厂。
    5. COM库调用类厂的CreateInstance()方法,创建客户程序请求的COM对象。
    6. CoCreateInstance()返回接口至客户端程序。
  • 参考:

原文地址:https://www.cnblogs.com/dahai/p/2193855.html