实例创建帮助程序函数

在以前的 COM 版本中,用于创建对象实例的主要机制是 CoCreateInstance 函数。 此函数封装创建类对象的过程,使用该对象创建新实例并释放类对象。 此类的另一个函数是更具体的 OleCreate,即创建类对象的 OLE 复合文档帮助程序,并检索指向所请求对象的指针。

为了顺利完成分布式系统上的实例创建过程,COM 引入了四个重要的新实例创建机制:

类名字对象允许标识对象的类,并且通常与另一个名字对象(如文件名字对象)一起使用,以指示对象的位置。 这样,便可以绑定到对象并指定要为该对象启动的服务器。 类名字对象也可能由支持绑定到 IClassActivator 接口的名字对象右侧组成。 有关详细信息,请参阅 类名字对象

CoCreateInstanceEx 扩展 CoCreateInstance,以便可以在指定的远程计算机上创建与给定 CLSID 关联的单个未初始化对象。 此外,CoCreateInstanceEx 无需请求单个接口并获取指向该接口的单个指针,因此可以在单次往返中查询多个接口(如果可用)接收指向它们的指针,从而允许计算机之间的往返次数减少。 这可以使远程对象交互更高效。 为此,该函数使用 MULTI_QI 结构的数组。

通过 CoCreateInstanceEx 创建对象仍需要通过调用其中一个初始化接口(例如 IPersistStorage::Load)初始化对象。 帮助程序函数 CoGetInstanceFromFileCoGetInstanceFromIStorage 封装 CoCreateInstanceEx 实例创建功能,以及初始化,前者来自文件和存储中的后者。

通过类对象创建对象