重阳 ChongyangLee

_____关注可编程技术______

导航

COM库中的两个基本函数浅析

Posted on 2012-03-01 12:53  ChongyangLee  阅读(214)  评论(0编辑  收藏  举报

这两个基本函数是 CoGetClassObject 和 CoCreateInstance ,本来用手画了个图,类似InsideCOM中的那幅图,但回到家没有画图的工具,自带的画图工具太难用了。就文字描述一下吧,希望能有帮助。

1.CoGetClassObject  

  • 客户调用 CoGetClassObject(pFactory);
    • Com库中调用DllGetClassObject
      • Dll实现中基本这样编写
        • new CFactory;
        • QueryInterface(IID_IClassFactory);
        • Release();
    • 返回到COM库中调用Dll实现中的如下函数:
      • AddRef();
      • Release();
      • QueryInterface();
      • 此处给*pFactory赋值;
      • Release();
  • 返回到客户调用。

2. CoCreateInstance

  • 客户调用CoCreateInstance(IID_IX, pX)
    • Com库中调用DllGetClassObject
      • DLL实现同上
    • Com库中调用CreateInstance
      • DLL实现基本是这个样子
        • pa = new CA;
        • QueryInterface(IID_IX)
        • Release();
    • COM 库中调用Dll实现中的如下函数
      • 如果CA没有被聚合:pa->AddRef();pa->Release();
      • CFactory::Release销毁工厂
      • 如果CA没有被聚合:pa->QueryInterface();pa->Release();
      • 此处给pX 赋值
  • 返回到客户调用