c# - 关于 CoCreateInstance() 方法实现的问题

标签 c# c++ com

我有一个关于 CoCreateInstnace() 方法如何定位和创建包含在 COM DLL 中的 CoClass 实例的问题。

根据MSDN :

The CoCreateInstance function provides a convenient shortcut by connecting to the class object associated with the specified CLSID, creating an uninitialized instance, and releasing the class object. As such, it encapsulates the following functionality:

CoGetClassObject(rclsid, dwClsContext, NULL, IID_IClassFactory, &pCF); 
hresult = pCF->CreateInstance(pUnkOuter, riid, ppvObj) 
pCF->Release(); 

所以我想知道这是否确实 CoCreateInstnace 是如何实现的?或者它只是一个逻辑等价物?如果它的实际实现不是这样,我完全不明白 CoCreateInstnace 如何仅使用 CLSID 和在 Windows 注册表中注册的一些 DLL 位置信息就可以找到并创建正确的 CoClass 的实例。

感谢您的回复。

最佳答案

请通过在 Visual Studio IDE 中使用调试版的 MSVCRT 库进行调试来检查它。或者,您可以扫描 VC++ 包含头文件

关于c# - 关于 CoCreateInstance() 方法实现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3487042/

相关文章:

c# - 如何在 C# 中的类型安全集合中存储具有受限泛型类型的 Action 委托(delegate)?

c# - .NET Core 中应该如何处理 IPC?

c++ - 设置 QT_DEBUG_PLUGINS 失败

c++ - 无限 while 循环和 for 循环有什么区别?

c++ - 如何运行无限循环?

python - Pywin32向word文档添加新页面

c# - 是否可以在某些场景中吞下除关键异常之外的所有异常?

javascript - 从<IMG>获取二进制图像内容

c++ - IAudioClient::Initialize 方法的未解析外部符号。应用程序接口(interface)

c# - Lumenworks Csv 阅读器读取具有相同名称的列或避免使用 ` An item with the same key has already been added`