头条资讯网_今日热点_娱乐才是你关心的时事新闻

今日热点 时事资讯
娱乐头条才是你关心的新闻
首页 > 头条资讯 > 科技

名词解释:Adjustor thunks

熟悉又陌生的玩意:Thunk

昨天,我在一篇文章中简单地介绍了COM组件对象的内存布局,我透露会在后面的文章中讲讲神秘的”Adjustorthunks”。那今天就来说道说道这玩意。

如果你有调试过反汇编代码,则你应该经常看到一些看起来比较奇怪的小型函数,这些函数就叫做”Adjustorthunks”。

下面我们来看看上次文章中我们提到的对象。

在上图中,当我们需要IPersist接口时,p会被返回。q是一个指向IQueryService接口的指针。

现在,只有一个QueryInterface方法,但是在虚函数表中却有两个条目。另外,请记得:在虚函数表中的每个函数将会从它的”this”指针接收到其对应的接口指针。对于第一个QueryInterface来说,这没有什么问题,因为对象的接口指针也指向了这个函数。

但是对于第二个QueryInterface来说,就不太妙了,因为它的接口指针是q,而不是p。

这个时候,”Adjustorthunks”就开始起作用了,如下图所示:

这个adjustorthunk将会获取”this”指针,然后对地址值减去4,这样就将q转换成了p,然后直接跳转到第一个QueryInterface方法来执行。

任何时候,当你处理多重继承,并且一个虚函数在多个基类中都被实现了的时候,你总是会得到adjustorthunk来处理第二个或者后面的基类中的方法,来将”this”指针转换为一个适当的,统一的格式。

总结

所以,此次的Thunk小技巧大家Get到了吧?

最后

RaymondChen的《TheOldNewThing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。

本文来自:《Adjustorthunks》

未经允许不得转载:头条资讯网_今日热点_娱乐才是你关心的时事新闻 » 名词解释:Adjustor thunks

分享到:更多 ()
来源:漫漫开发路 编辑:科技

评论

留言/评论 共有条点评
昵称:
验证码:
匿名发表