OLE 处理程序

OLE 处理程序是一个 DLL,其中包含多个用于链接和嵌入的多个交互组件。 为了避免在容器及其服务器之间进行持续的进程间通信,处理程序被加载到容器的进程空间中,作为一种代理进程代表服务器。 OLE 处理程序管理不需要服务器应用程序注意的容器请求,例如绘图请求。 当容器请求对象处理程序无法提供的服务时,处理程序将使用 COM 进程外通信机制与服务器应用程序通信。

OLE 处理程序组件包括用于管理处理程序与其服务器应用程序之间通信的远程处理片段、用于存储对象的数据的缓存(以及有关如何设置数据格式和显示数据的信息),以及协调 DLL 的其他组件的活动的控制对象。 此外,如果对象是链接,DLL 还包括链接组件或链接对象,用于跟踪链接源的名称和位置。

OLE 提供了大多数应用程序用于链接和嵌入的默认处理程序。 如果默认处理程序与服务器的要求不匹配,则可以完全替换默认处理程序,也可以在适当的情况下使用它提供的部分功能。 在后一种情况下,应用程序处理程序作为由新控件对象和默认处理程序组成的聚合对象实现。 组合应用程序/默认处理程序也称为进程内处理程序远程处理处理程序用于未在系统注册表中分配 CLSID 或没有指定处理程序的对象。 对于这些类型的对象,处理程序所需要的只是它们跨流程边界传递信息。 若要创建默认处理程序的新实例,请调用 OleCreateDefaultHandler。 对于某些特殊情况,请调用 OleCreateEmbeddingHelper

为一个类创建处理程序的实例时,不能将其用于另一个类。 当用于复合文档时,OLE 处理程序将在远程访问特定类的对象时实现容器端数据结构。

OLE 为复合文档本地服务器的客户端定义了默认处理程序。 默认处理程序实现了许多典型服务器未实现的接口。 当 OLE 随后允许进程内服务器处理复合文档时,他们必须创建一个嵌入帮助程序来实现这些额外的接口,以便客户端可以无缝地与它们一起工作。

定义和实现客户端处理程序的框架设计者应该在设计中考虑这个问题,并出于同样的原因提供等效的进程内帮助程序。 即使设计人员目前没有在服务器没有公开的处理程序上实现接口,他们也可能希望现在定义一个帮助程序,以便将来可以添加它们。 或者,可以在服务器对象本身上实现额外的接口。

轻型客户端处理程序