com - CoCreateInstance 的具体功能是什么?

标签 com

我是 .NET 程序员和 COM 新手。想简单了解一下 CoCreateInstance 的作用是什么?

最佳答案

你可以想到CoCreateInstance()作为匿名工厂类的接口(interface)。

在 OOP 中,使用工厂模式来调用创建方法并获取接口(interface)指针/引用通常是合理的,而不必知道该接口(interface)背后究竟是什么类。但是您仍然需要知道将哪个类用作工厂。您也可以通过使用一些全局函数来隐藏它,但您仍然需要知道它的名称和调用约定。

CoCreateInstance 更进一步——它也隐藏了工厂类并提供了一个系统范围的全局函数。你所提供的只是一个类 id——它只是一个 GUID——和一个接口(interface) id——它也是一个 GUID。您不知道实现在哪里以及它使用什么语言 - COM 处理所有这些,因为您的系统上有一个 COM 服务器,其中包含指定类 id 的实现,它公开了指定接口(interface) id 的接口(interface)。

您调用系统范围的全局 CoCreateInstance(),它会找到 COM 服务器(或失败),初始化它,要求它创建一个对象(可能会失败),检索指向该对象的接口(interface)指针(也可能会失败)并返回这个指向你的接口(interface)指针。

关于com - CoCreateInstance 的具体功能是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1394094/

相关文章:

powershell - 无法在PowerShell函数中运行[System .__ ComObject] .InvokeMember

c++ - 从 WinRT C++ 组件访问 COM 对象

multithreading - FreeThreadedDOMDocument,Neutral Apartments和Free-threaded Marshaler

windows - COM服务真的不能同时被多个程序使用吗?

multithreading - Delphi 7如何使Com对象等到程序初始化完成?

C# - 将 Nullable<T> 公开给 COM 的好方法

c++ - ATL & COM - 多个服务器,一个二进制文件?

c++ - COM 中的异常

c# - C# 编译器如何检测 COM 类型?

python - 如何使用 python win32com 或 comtypes 中的 COM 访问 IRTDServer?