COM:可连接对象&结构化存储 潘爱民 http://www.icst.pku.edu.cn/compcourse
内容 复习:COM基础 可连接对象 结构化存储
复习:COM基础 机器A 机器B COM客户 COM组件 Apartment Apartment o XXX +0 proxy安全通道 双接口 VB客户 ORPC COM库(LE32DL) COM库(LE32DL) COM库( Sh RPCSS. EXE
RPCSS.EXE OLE32.DLL OLE32.DLL
聚合模型的关键 对象B 客户程序 调用 lOtherInterface 传递 调用 数据如何传递 对象A ISomelnterfacel
可连接对象( connectable object) 内容: 可连接对象结构模型 ·实现可连接对象(源对象) 客户-源对象-接收器的协作过程 可连接对象的程序实现
双向通信机制 (客户与可连接对象的关系) 客户把接收器的接 客户 口指针传给对象 少O 接收器 可连接对象 可连接对象调用接 收器的接口成员
! "#
两个概念 入接口 incoming interface 组件对象实现入接口,客户通过入接口调用对象提供 的功能 客户和组件都需要知道接口的类型信息 出接口( outgoing interface 客户端提供的COM对象实现出接口 组件端的对象通过出接口调用客户提供的功能 组件提供接口类型信息,客户实现该接口 类似于回调( (callback),但是要复杂和灵活得多
! ! " #$% &'()*+,-
出接口 ·类型信息由组件一方提供 客户提供出接口的实现,实现出接口的COM对 象被称为接收器对象(sink) sink没有 CLSID,也不需要类厂 也是一个COM接口,有ID 每个成员函数代表了: 事件 event 通知 notification 请求 request
./ 012 !"#$%&' 3 45
源对象or可连接对象 Connectable object, source 普通的COM对象,支持一个或者多个出 接 提供出接口的类型信息 通过 [Provide classInfol2接口 通过 typelib
$% &'()*+,)- . /0- .123 () () !"