看了关于IMarshal 和 GIT的介绍 有几个问题请教: 我理解COM的特点就在于巧妙的把对象和接口分离开来 形成一种可复用的标准 而IMarshal接口实际上实现了对象的跨进程传递 我不明白的就是怎么有个GIT ? 这个GIT是哪里来的 ? 是哪里实现的? 没它在实现IMarshal接口的条件下一样不影响COM对象的访问啊 而且这个GIT怎么就可以保证传递的局部指针是有效的呢?不明白 请高手指点 多谢
解决方案 »
- DLL项目的头文件、源文件、宏,各位有什么设计经验,我是乱套了
- [win32]怎么设置通过CreateWindowEx()创建的按钮字体?
- 用VC6写的东西反汇编怎么是VC5了? 很纠结................
- 高手们,进来看一下!
- 无法解析的外部符号(自定义工具栏消息映射问题)在线等!
- 关于SQL的简单问题 大虾莫笑
- 一个网上教程流行的留言板,但根本无法运行,大家帮忙看看。(在线等待)
- 各位高手能不能在线帮助,我快崩溃了。。。help...
- 请问大家,你们怎么还没睡觉,明天不上班吗?
- 块帮帮我,我用SENDMESSAGE来给DIALOG法消息,但却没有用?
- 我利用的是弹出菜单!ON_UPDATE_COMMAND_UI建立映射以后,还是不能标记(打勾)!
- CCombobox中增加了项,怎么显示的时候和选择的时候出现问题?
首先:GIT和Marshal的目的是一样的,都是要实现接口对象跨进程传递。
他们的不同在与使用的方法:Marshal是序列化接口对象,使用以下两个接口函数:
MarshalInterface()和UnmarshalInterface()(可以查看MSDN)。要求是必须实现IMarshal接口
Class Itr : public IMarshal .....
{ ........ }
GIT是全局接口表 在本套间可以将接口指针注册在GIT中 然后在套间外程外从GIT中散列接口指针,这就是所谓的FTM.它的好处就在于你可以不必关心你不需要的东西,而关注实现就行。