进入运行状态

当嵌入对象转换为运行状态时,对象处理程序必须查找并运行服务器应用程序,才能利用只有服务器才提供的服务。 嵌入对象通过容器的请求显式处于运行状态,例如需要绘制当前未缓存的格式,或由调用某些操作(例如当容器的用户双击对象时)的 OLE 隐式显示。

当链接对象转换为运行状态时,该进程称为绑定。 在绑定过程中,对象处理程序要求其存储的名字对象查找链接的数据,然后运行服务器应用程序。

乍一看,绑定链接对象似乎不如运行嵌入对象复杂。 但是,以下几点会让该过程变复杂:

  • 链接可以引用嵌入另一个容器的对象或其部分。 此功能意味着可能出现嵌套嵌入的情况。 解析对此类层次结构的引用需要以递归方式遍历复合名字对象,从最右侧的成员开始。
  • 链接源运行时,OLE 绑定到对象正在运行的实例,而不是运行另一个实例。 对于嵌套嵌入对象,其中一个是链接源,OLE 必须能够随时绑定到已运行的对象。
  • 运行一个对象需要访问该对象的存储区域。 当嵌入对象运行时,OLE 会在加载过程中收到指向存储的指针,该指针将传递给 OLE 服务器应用程序。 但是,对于链接对象,没有用于访问存储的标准接口。 OLE 服务器应用程序可以使用文件系统接口或其他一些机制。