喜欢面向对象的兄弟,都来来侃侃this吧!(同时热烈欢迎各阶层兄弟同侃) COM的接口指针指向的是COM类对象实例的VTBL(虚函数地址表),对VC编译的X86平台而言,指向VTBL的指针是COM类对象实例的数据成员(不可见的),在所有数据成员的(地址空间)前面 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 老兄说的有点含糊,我想知道接口指针(不讨论列集接口指针)的具体情况,从C++中可以看看对象模型的客户(类使用者)和实现(类定义)之间的关系,也可以看到如何实现指向类对象的this和指向类实例的this如何分别实现的。在COM中情况变的很特殊,类定义者和类使用者分开,类对象的this可以通过vtbl维护,但类实例的this就很困难了,更重要问题是类实例到底是在客户端还是服务端的内存中,还是各有一个?都都来关注啊~-~!!! 当客户和服务在不同进程中时,客户得到的指针是指向代理接口的。代理也是一个组件,接口函数和服务组件形式一样,但函数实现不同,它用来调整函数参数,然后用lpc调用服务端的残根dll中的对应函数,由该函数反调整函数参数,再调用真正函数。对于lpc原理,我认为是通过int xxh通过调用门或中断门转到内核,内核再实现进程切换,调用服务进程的函数。其中内核如何得到残根的函数地址,我不明白,残根dll的函数应该都是export出来的吧,(我去dumpbin一下)也许是分析dll文件头(装dll时有登记所有信息)得到逻辑地址,再加装dll时的偏移得函数地址。其它关于系统如何保存寄存器内容,切换TSS等等细节,一想头都大了。我认为接口等于纯抽象基类,当然没有变量在this指针指向的空间的周围了.不同编译器放vtp的地方不同,C++this指针指向的应该一定是实例变量和vto所处的空间的首地址吧,com中接口this指向的是vto,因为没有变量。以上只是我的看法。我汇编不好(读起来都要吐),想分析系统有心无力,等大2下学期真正学汇编再搞,现在你干吧。有关于lpc,rpc的资料麻烦给一点:[email protected].很需要你的指教。thx. 对话框工程 工具栏设置 FinalRelease函数 IE对内容“选定"“全选"时绘制的处理及DrawState函数作用 用Visual Studio 2005 写的MFC 数据类型转换???难???知者不难,不知者,难难难 -------------有谁知道如何在VC.Net中删除类成员???-------------------- 程序如何实现自重启? 我的Hook程序不能搞点Delphi程序.(WIN98) 2 个listbox 之间怎么互相通知? 图像DFT压缩设计 致 prglib(多多) 怎样使一个程序在windows开机是就运行
接口函数和服务组件形式一样,但函数实现不同,它用来调整函数参数,然后用lpc调用
服务端的残根dll中的对应函数,由该函数反调整函数参数,再调用真正函数。
对于lpc原理,我认为是通过int xxh通过调用门或中断门转到内核,内核再实现进程
切换,调用服务进程的函数。其中内核如何得到残根的函数地址,我不明白,残根dll
的函数应该都是export出来的吧,(我去dumpbin一下)也许是分析dll文件头(装dll时有登记所有信息)得到逻辑地址,再加装dll时的偏移得函数地址。其它关于系统如何保存寄存器内容,切换TSS等等细节,一想头都大了。
我认为接口等于纯抽象基类,当然没有变量在this指针指向的空间的周围了.
不同编译器放vtp的地方不同,C++this指针指向的应该一定是实例变量和vto所处的空间的首地址吧,com中接口this指向的是vto,因为没有变量。
以上只是我的看法。我汇编不好(读起来都要吐),想分析系统有心无力,等大2下学期真正学汇编再搞,现在你干吧。有关于lpc,rpc的资料麻烦给一点:
[email protected].
很需要你的指教。
thx.