关于 CoCreateInstance() 方法实现的问题
Posted
技术标签:
【中文标题】关于 CoCreateInstance() 方法实现的问题【英文标题】:Question about CoCreateInstance() method's implementation 【发布时间】:2011-03-30 01:25:22 【问题描述】:我有一个关于 CoCreateInstnace() 方法如何定位和创建包含在 COM DLL 中的 CoClass 实例的问题。
根据MSDN:
CoCreateInstance 函数提供 通过连接到一个方便的快捷方式 与关联的类对象 指定的 CLSID,创建一个 未初始化的实例,并释放 类对象。因此,它 封装了以下内容 功能:
CoGetClassObject(rclsid, dwClsContext, NULL, IID_IClassFactory, &pCF);
hresult = pCF->CreateInstance(pUnkOuter, riid, ppvObj)
pCF->Release();
所以我想知道这是否完全 CoCreateInstnace 是如何实现的?或者它只是一个逻辑等价物?如果它的实际实现不是这样,我完全不知道 CoCreateInstnace 是如何找到并创建一个仅在 Windows 注册表中注册的 CLSID 和一些 DLL 位置信息的正确 CoClass 的实例。
感谢您的回复。
【问题讨论】:
它做得更多,但这需要一本书。 究竟你觉得哪一部分像黑魔法? 【参考方案1】:请在 Visual Studio IDE 中使用调试版本的 MSVCRT 库进行调试来检查它。或者,您可以扫描 VC++ 包含头文件
【讨论】:
以上是关于关于 CoCreateInstance() 方法实现的问题的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Avira 将“CoCreateInstance()”函数视为恶意软件?
在 VS 2012 中调用 CoCreateInstance 期间符号加载缓慢
在 COM 中:我应该在 CoCreateInstance 之后调用 AddRef 吗?
IWICImagingFactory 的 CoCreateInstance