美文网首页
.net文件结构之元数据流

.net文件结构之元数据流

作者: 四宝日记 | 来源:发表于2020-03-18 16:00 被阅读0次

书上是这样说的:

数据结构差不多如下:

到此为止,都是可以理解的:

但后面就会让人摸不到头脑,原因就在这里:

这里理解了很久,最后明白了一些,这应该是一种存储方式:

后面的数据,要结合这一串0101……来看,整理过后,应该是这样:

也就是说,上面一行表示那块有表,下面对应的就是表的记录数量:

在取表内容的地方卡了很久,被书里面表描述、列描述给搞晕了,从解析工具来看,和什么描述的数据结构根本就没什么关系:

这里就有一个问题,每个表的结构不同,它是怎么知道后面的数据对应的都是哪一个结构呢?

我本以为是书里没说清楚,可是直到我再dnlib源码里看到了Table的定义:

那么它是如何转换的呢?

终于在源码中找到了答案:

判定的顺序不是内存顺序,而是数字由低到高的顺序:

至此,已经可以找到对应的表顺序,接下来按照各个表的数据结构进行解析就可以了。

定义结构体的时候又发现了问题,同一个表结构,数据类型竟然不一样:

解决办法,老规矩,上源码:(不得不说,c#的代码是越看越流了)

可以看到,数据类型适合bigString、bigGuid、bigBlob有关系的。

最后根据源码确定了是在表头位置存在一个标志,通过位控制符控制字段的数据类型:

至此解析元数据流表的必要条件应该都已经掌握了。

相关文章

  • .net文件结构之元数据流

    书上是这样说的: 数据结构差不多如下: 到此为止,都是可以理解的: 但后面就会让人摸不到头脑,原因就在这里: 这里...

  • .net文件结构之托管资源

    由于在书里没有找到具体的托管资源数据结构,这个过程主要通过dnlib源码进行分析。 以上是本次研究使用的样本,目的...

  • C# Notizen 13 文件和流

    .NET Framework将文件视为数据流。流是一系列用字节表示的数据分组。数据流有底层存储介质,这些存储介质通...

  • FFmpeg结构体:URLProtocol

    1.描述 URLProtocol是FFmepg操作文件的结构(包括文件,网络数据流等等),包括open、close...

  • UNIX文件系统----用户角度

    文件: 文件即 数据流,字符流(字节流) 操作系统不对文件进行任何结构化 在UNIX系统中,文件时字节序列 三种文...

  • 2017.9.13

    作用域可见性,友元,多文件结构。·h·cpp文件

  • 字体自定义

    ttf文件结构解析从字体中提取ttf文件 浏览:http://blog.csdn.net/kmyhy/articl...

  • phpredis是如何链接redis服务器的

    几个文件 php_streams.h 定义了php数据流的结构与相关函数 php_streams.c 定义了php...

  • Mac下DotNet解压zip文件目录结构错乱的问题

    Dot Net下解压一个文件很简单: 但是一个程序在Mac下运行Dot Net程序去解压一个zip文件,目录结构都...

  • JVM——class文件结构 详解

    目录 1. Class文件结构简介[https://blog.csdn.net/dgh112233/article...

网友评论

      本文标题:.net文件结构之元数据流

      本文链接:https://www.haomeiwen.com/subject/yroqyhtx.html