实例创建帮助程序函数

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

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

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

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

通过 CoCreateInstanceEx 创建对象仍需要通过调用某个初始化接口(如 IPersistStorage::Load)初始化对象。 帮助程序函数 CoGetInstanceFromFileCoGetInstanceFromIStorage 封装 CoCreateInstanceEx 的实例创建功能和初始化功能,分别用于文件和存储。

通过类对象创建对象