这两个函数打印相关。不要以为这可以在应用层做,----呵呵,我指的是98哦。那么在内核怎么实现呢?关于vxd,大家都知道如何截获文件的api操作如删除啦改名啦等等。但是,打印是不一样的,这里截获的是一个进程的打印api,我也不太懂,还望高手指点啊。
回复(29) 2004-05-26 10:59 来自版块 - 内核编程
表情
AllenZh但我想MS应该吸取以前的教训,做的聪明些 这样就会比16位到32位简单了(2004-06-13 18:38)
AllenZh是呀,但是当64位真正大规模使用时,32位到64位转换也成为一个很大的事了。(2004-06-13 18:37)
wowocock16位和32位同时处理,很麻烦的,所以在64位以后,所有的内核64位的,避免了无谓的烦琐。。。。。。(2004-06-02 21:14)
yetty惭愧,你说的很多我都不知道是什么东西,毕竟是一月前真正开始编程,读硕的年代都是用matlab做数学计算。当然也是自己不学无术。 离题了。。。。。。(2004-06-02 12:51)
AllenZh另外需要将自己的代码注入修改的模块,这也有很多办法, 如果对16位和32位同时处理,需要使用thunk等老掉牙的技术(2004-06-02 11:54)
AllenZh实现思路(当然也有其它方法)是在函数入口增加一条跳转指令,跳到你的函数地方,然后你处理,然后恢复指令并执行,执行后修改为跳转。 这只是实现该方法的一个办法,当然还有很多其他方法。(2004-06-02 11:51)
yetty再顶一下 下面是SnowStart得到api的地址方法,我知道这是在应用层才能用,没关系,我的想法是现在应用层得到api的地址,然后再vxd中去写内存,所以这段代码还是可以借鉴的。但是一个新的问题出现了,就是gdi32.dll被进程调用的时候,它是映射到该进程的地址空间的,所以...(2004-06-02 10:19)
driversupport我也很想知道,ring0级还是很难的。(2004-06-01 13:18)
AllenZh由于该技术已经过失,并且很繁琐,所以这里不想多说了。 只是提供一个实现实现需要注意的地方。 首先需要vc1.5恐怕现在很少有人有了,95ddk,还有对DPMI非常熟悉,对16位的内存管理熟习等等。(2004-05-31 22:48)
yetty还是AllenZh说的对。 其实也不是16位与32位的区别,只是98与2000的区别。 对于2000,核心编程那本书上讲得非常详细,我也实现了。 但是核心编程书上同时也说了很多2000与98区别,结果我用同样的办法在98下实现,却出现系统崩溃现象。 就是常见的什么你做了非...(2004-05-31 19:40)

返回顶部