返回目录 小结 既然你已经了解元数据原则上是如何被组织的,你要准备好检测这些特定的元数据项和表示它们的表。所有进一步的考虑都将集中在4个元数据流上——#Strings、#Blob、#US和#~——因为#GUID只在一个元数据表中被引用到(Module表),而#-流(未优化的元数据)则从来不会被ILAsm编译器发布。 这里对一些人有一些建议,他们想知道这是否一个好的主意——在细微操作元数据的借口... Read More
返回目录 元数据和验证 然而,这个“好的暗示”,仅仅是一个暗示。在前述的部分提供了关于你可以从一个列的确定的类型引用哪些表的信息。这并不意味着你应该引用所有你能够引用的表。在表5-10中列出的一些群组的符号类型比在CLR现有的发布版本中实际上可接受的要更加广阔。例如,MemberRefParent群组,描述了能够包含MemberRef记录的父级别的表,包括TypeDef表。但是这个元数据发布A... Read More
返回目录 RID和符号 记录的索引和符号,是无符号整数值,用于索引元数据表中的记录。RID是简单的索引,只适用于显示指定的表,而符号则携带了识别它们所引用的元数据表的信息。 RID RID是一个识别符,是一个在包括了记录的表中从1开始的行号。有效的RID的范围从1延展到地址表中的记录的数量,1和这个数量值也包括在内。RID只用于元数据的内部;元数据发布和API重... Read More
返回目录 堆和表 从逻辑上讲,元数据被表示为一组有名称的流,附带着每个流表示一类的数据。这些流被分为两种类型:元数据堆和元数据表。 String堆:这种类型的堆包括了0休止符字符的字符串,以UTF-8格式编码。这些字符串直接首尾相接。这个堆的第一个字节总是为0,而且这导致了堆中的第一个字符串总是为空字符串的结果。这个堆的最后一个字节也必须是0(换句话说,堆中的最后一个字符串,就像其它的一样,必... Read More
返回目录 本章对元数据及其构造方式进行了概述。也还描述了元数据验证。后面的章节将会分析单独的元数据项——基于这里所表示的基础。我理解你可能的急躁——“这个家伙不要拖延时间,什么时候才能进入正题?”——但是我仍然奉劝你不要跳过本章。远远不是拖时,我只是系统地接近这个对象。这看上去可能是一样的,但是动机是完全不同的,而这正是我所关心的。 什么是元数据? 元数据的定义:描述数据的数据。然而,就像... Read More