Allbet

usdt支付(caibao.it):浅谈COM工具的内存结构

Allbet登录网址 2021年12月05日 科技 182 2
2020-12-02 23:11 漫漫开发路

上古时代的COM组件

Win32 COM组件的挪用规范指明晰一个工具的虚函数表(vtable)的内存结构。若是语言/编译器希望支持某个COM组件,则它必须根据规范指明的结构来放置工具,否则就会失去COM组件的跨语言互操作性,也即:其他组件将不能正常的挪用这个组件。

Win32 COM组件的内存结构和C++工具的内存结构具有高度的一致性,这并非巧合。 只管COM最初被开发的时刻,C语言还占有着主导地位,COM的设计者就看到了COM组件对即将到来的C++十分”友好”。

一个COM组件的内存结构被界说在接口界说的头文件中。举个例子,下图的代码来自objidl.h,它界说了IPersist接口。为了利便旁观,我去掉了一些无关的宏。

usdt支付(caibao.it):浅谈COM工具的内存结构 第1张

我们来看它的内存结构:

usdt支付(caibao.it):浅谈COM工具的内存结构 第2张

这是什么意思呢?

一个COM接口指针,现实是一个指向上述结构体的指针,这个结构体里只界说了一个虚函数表,没有界说任何数据成员。虚函数表中包含了接口所支持的种种接口方式的指针。每个接口方式会将接口指针(上图中的p)作为它的第一个参数,也就是人人所熟悉的this指针。

黑魔法就在于,由于接口方式可以从它的第一个参数中获得接口指针,以是你可以在虚函数表中添加其他的器械,如下图所示:

-------------------------

欧博网址

www.allbet8.us欢迎进入欧博网址(Allbet Gaming),欧博网址开放会员注册、代理开户、电脑客户端下载、苹果安卓下载等业务。

-------------------------

usdt支付(caibao.it):浅谈COM工具的内存结构 第3张

位于虚函数表中的接口方式可以使用相对接口指针p的偏移来接见你所添加的器械,例如数据成员。

若是一个工具实现了多个接口,然则它们都继续自同一个祖先,则我们只需要一个单一的虚函数表就可以接见接口的所有成员。 举个例子,上面的工具可以被当做一个IUnknown接口或者一个IPersist接口,由于IUnknown是IPersist的父接口。

另一方面,若是一个工具实现了多个接口,然则不继续同一个祖先,则你就获得了一个多重继续,在这种情况下,工具的内存结构类似于下图:

usdt支付(caibao.it):浅谈COM工具的内存结构 第4张

我们来对上图做一个剖析。 若是你使用来自于第一个虚表的接口方式,则接口指针为p。 然则,若是你使用来自第二个虚表的接口方式,则接口指针为q。总结

我会在后面的文章中继续对上图举行一些分外的剖析,例如神秘的”adjustor thunks“。

请期待。最后

Raymond Chen的《The Old New Thing》是我异常喜欢的博客之一,内里有许多关于Windows的小知识,对于宽大Windows平台开发者来说,确实十分有辅助。

本文来自:《The layout of a COM object》

usdt支付(caibao.it):浅谈COM工具的内存结构 第5张 Allbet声明:该文看法仅代表作者自己,与www.allbetgame.us无关。转载请注明:usdt支付(caibao.it):浅谈COM工具的内存结构
发布评论

分享到:

usdt交易平台(www.payusdt.vip):realme 真我GT Neo 16分钟回血50% 在生涯中多有用?
2 条回复
  1. 皇冠APP(www.22223388.com)
    皇冠APP(www.22223388.com)
    (2021-10-16 00:01:02) 1#

    皇冠APP下载www.huangguan.us)是一个开放皇冠即时比分、皇冠官网注册的平台。皇冠注册平台(www.huangguan.us)提供最新皇冠登录,皇冠APP下载包含新皇冠体育代理、会员APP。

    别具一格

  2. USDT钱包支付(www.usdt8.vip)
    USDT钱包支付(www.usdt8.vip)
    (2021-12-05 00:03:10) 2#

    FiLecoin官网(www.ipfs8.vip)是FiLecoin致力服务于使用FiLecoin存储和检索数据的官方权威平台。IPFS官网实时更新FiLecoin(FIL)行情、当前FiLecoin(FIL)矿池、FiLecoin(FIL)收益数据、各类FiLecoin(FIL)矿机出售信息。并开放FiLecoin(FIL)交易所、IPFS云矿机、IPFS矿机出售、租用、招商等业务。get到好看的点了

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。