正在阅读:PE文件格式详解(5)PE文件格式详解(5)

2004-02-14 09:34 出处:PConline 作者:titilima/CSDN 责任编辑:linjixiong


  OffsetToData和Size这两个域表示了当前资源数据的位置和尺寸。既然这一信息主要是在应用程序装载以后由函数使用的,那么将OffsetToData作为一个相对虚拟的地址会更有意义一些。——幸甚,恰好是这样没错。非常有趣的是,所有其它的偏移量,比如从目录入口到其它目录的指针,都是相对于根结点位置的偏移量。

  要更清楚地了解这些内容,请参考图2。

  图2.一个简单的资源树结构

  图2描述了一个非常简单的资源树,它包含了仅仅两个资源对象:一个菜单和一个字串表。更深一层地来说,它们各自都有一个子项。然而,你仍然可以看到资源树有多么复杂——即使它像这个一样只有一点点资源。

  在树的根部,第一个目录有一个文件中包含的所有资源种类的入口,而不管资源种类有多少。在图2中,有两个由树根标识的入口,一个是菜单的,另一个是字串表的。如果文件中拥有一个或多个对话框资源,那么根结点会再拥有一个入口,因此,就有了对话框资源的另一个分支。

  WINUSER.H中标识了基本的资源种类,我将它们列到了下面:

  WINUSER.H
  /*
  * 预定义的资源种类
  */
  #define RT_CURSOR MAKEINTRESOURCE(1)
  #define RT_BITMAP MAKEINTRESOURCE(2)
  #define RT_ICON MAKEINTRESOURCE(3)
  #define RT_MENU MAKEINTRESOURCE(4)
  #define RT_DIALOG MAKEINTRESOURCE(5)
  #define RT_STRING MAKEINTRESOURCE(6)
  #define RT_FONTDIR MAKEINTRESOURCE(7)

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品