PE文件格式(3)
2007-01-14 20:15:00 来源:WEB开发网ID的意义依赖与在树内的层次,ID可能是一个数字(高位清0)或者名字(高位置1),如果是名字,低31位是从资源节的原始数据开始到名字的偏移量。名字是16位长度,以宽字符结尾,不是0。
如果在根目录下,如果ID是数字,是资源类型:
1:cursor
2:bitmap
3:icon
4:menu
5:dialog
6:stringtable
7:fontdirectory
8:font
9:accelerators
10:unformattedresourcedata
11:messagetable
12:groupcursor
14:groupicon
16:versioninformation
任何其他数字都是自定义的,任何带类型名字的资源类型都是自定义的。更深一层的话,ID是资源ID或者资源名字。
如果再深入一层,ID必须是数字,它是特定资源实例的语言ID,例如,可以具有不同本地化的语言的对话框。他们使用统一的资源ID,系统会选择基于线程的地域加载对话框,反过来反应用户的区域设置。如果对于线程本地没有资源发现,系统首先试图发现中立语言为资源的区域。如果还不能够发现,带有最小语言ID的实例将被使用。解码语言ID,拆分为主语言ID和子语言ID,使用宏PRIMARYLANGID()和SUBLANGID(),分别是0-9,10-15。其值定义在"winresrc.h".
语言资源只被加速键,对话框,菜单,串表支持,其他资源类型必须是LANG_NEUTRAL/SUBLANG_NEUTRAL.
要找出资源目录的下级目录是否是另一个目录,检查偏移量的高位,如果置1,其余31位是从资源原始数据开始到下一个目录的偏移量。格式还是IMAGE_RESOURCE_DIRECTORY后面跟着IMAGE_RESOURCE_DIRECTORY_ENTRYs项目.
如果高位清0,偏移量是从节开始到资源原始数据描述结构(一个IMAGE_RESOURCE_DATA_ENTRY)的偏移量。一个IMAGE_RESOURCE_DATA_ENTRY包括
更多精彩
赞助商链接