“PE文件格式”1.9版 完整译文(附注释)(2)
2007-01-14 20:15:21 来源:WEB开发网32位未使用标志,叫做“特征”(Characteristics);
32位“时间日期戳”(同样按常用的time_t表示法),告诉你资源被创建的时间(如果此项被设置的话);
16位“主版本号”(MajorVersion)和16位“小版本号”(MinorVersion),以允许你据此维护资源的几个版本;
16位“已命名项目数”(NumberOfNamedEntries)和另一个16位的“ID项目数”(NumberOfIdEntries)。
紧随此结构后的是“已命名项目数”+“ID项目数”两结构体,它们都是“资源目录项”格式,都以名字开头。它们可能指向下一个“资源目录”或者指向实际的资源数据。
一个“资源目录项”由下面组成:
32位单元提供你它所描述的资源的ID或者是目录;
32位的到数据的偏移量或者是到下一个子目录的偏移量。
ID的含义取决于树中的层次;ID可能是一个数字(如果最高位为0)也可能是一个名字(如果最高位为1)。如果是一个名字,它的低31位就是从资源节原始数据的开始到这个名字(名字有16位长并由unicode的宽字符而不是0结尾符作为结束)的偏移量。
如果你位于根目录之中,且如果ID是一个数字的话,那么它指的就是下面的一种资源类型:
1:光标
2:位图
3:图标
4:菜单
5:对话框
6:字串表
7:字体目录
8:字体
9:快捷键
10:未格式化资源数据
11:信息表
12:组光标
14:组图标
16:版本信息
任何其它数字都是用户自定义的。任何有类型名的资源类型也是用户自定义的。
如果你处于(树的)下一层当中,此时ID一定是一个数字,且就是资源的一个特例的语言ID号;例如,你可以(同时)拥有澳大利亚英语、加拿大法语和瑞士德语等本地化形式的对话框,并且它们分享同一个资源ID。系统会根据线程的地点来选择要使用的对话框,反过来地点又反映了用户的“区域设置”。(如果资源找不到线程地点,系统将先使用一个中性的子语言资源作为地点,比如它将寻找标准法语而不是用户所拥有的加拿大法语;如果它还是找不到,就使用最小语言ID号的那个实例。必须注意,所有这些只工作于NT系统之上的。)
更多精彩
赞助商链接