这两个基本函数是 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 赋值
- 返回到客户调用