logo资料库

磁盘与文件系统详解(FAT32+NTFS+安全删除文件流程及C代码实现).docx

第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
资料共31页,剩余部分请下载后查看
零、MBR DPT EBR
1、MBR主引导记录/扇区
2、EBR分区表
一、FAT32文件系统
1、基本介绍
2、FAT表
(1)FAT12 16 32区别
(2)FAT表结构及作用
2、数据区
(1)根据簇号得到在FAT中的扇区号和偏移:
(2)目录项FDT
二、NTFS文件系统
1、基本介绍
(1)DBR Dos Boot Record
(2)$boot文件
(3)$MFT文件
2、具体讲文件记录
【文件记录头】
【属性】
三、查找一个文件过程
1、思路
2、手动查找的过程
四、彻底删除文件
1、系统删除文件的过程
2、我们安全删除需要做的事情
3、我们安全删除的思路
五、代码实现
1、模块及关键代码
(1)交互模块
(2)安全删除总控模块
(3)覆盖文件内容模块
(4)改写文件名模块
2、涉及函数和数据结构
磁盘&文件系统 目录 一、 零、MBR DPT EBR.............................................................................................................................. 2 1、MBR 主引导记录/扇区 .........................................................................................................2 2、EBR 分区表........................................................................................................................... 3 FAT32 文件系统.................................................................................................................3 1、 基本介绍 ........................................................................................................................ 3 2、 FAT 表 ............................................................................................................................. 4 (1)FAT12 16 32 区别...................................................................................................4 (2)FAT 表结构及作用...................................................................................................4 3、 数据区 ............................................................................................................................ 6 (1)根据簇号得到在 FAT 中的扇区号和偏移: ..........................................................6 (2)目录项 FDT............................................................................................................... 6 二、NTFS 文件系统........................................................................................................................... 9 1、基本介绍.............................................................................................................................. 9 (1)DBR Dos Boot Record............................................................................................9 (2)$boot 文件 .............................................................................................................10 (3)$MFT 文件 ............................................................................................................... 11 2、具体讲文件记录 ................................................................................................................11 【文件记录头】..............................................................................................................11 【属性】 .......................................................................................................................... 12 三、查找一个文件过程 .................................................................................................................. 21 1、思路.................................................................................................................................... 21 2、手动查找的过程 ................................................................................................................21 四、彻底删除文件 .......................................................................................................................... 26 1、系统删除文件的过程 ........................................................................................................26 2、我们安全删除需要做的事情............................................................................................26 3、我们安全删除的思路 ........................................................................................................27 五、代码实现 .................................................................................................................................. 28 1、模块及关键代码 ................................................................................................................28 (1)交互模块 ................................................................................................................28 (2)安全删除总控模块 ................................................................................................28 (3)覆盖文件内容模块 ................................................................................................28 (4)改写文件名模块 ....................................................................................................28 2、涉及函数和数据结构 ........................................................................................................28
零、MBR DPT EBR 1、MBR 主引导记录/扇区 【磁盘第一个的扇区】,开机后第一个访问,0 柱面 0 磁道 1 扇区,512 字 节,包括【446 字节的引导程序】和【64 字节的 DPT 磁盘分区表】和【2 字节的 55AA 结束标志】。 (1)引导程序:检查 DPT 是否正确->系统硬件自检完成后将控制权交给硬 盘上的引导程序(如 GRUB),不依赖 OS,可修改,可实现多系统引导。 (2)DPT 作用:对四个分区(可小于 4)的信息进行描述,其中每个分区的 信息占据 16 个字节,16 个字节的定义如下: 由于其对分区数的限制,所以引出拓展分区,理论上可划分为无数个逻辑分 区,其中逻辑驱动器的引导记录是链式的,每个逻辑分区都有一个类似 MBR 的 EBR
2、EBR 分区表 其第一项指向该逻辑分区本身的引导扇区,第二项指向下一个逻辑驱动器的 EBR,第三、第四项未用到。 MBR 分区表中最多一个扩展分区,但可再细分为逻辑分区 Linux 中硬盘命名为 sda1-sda4 或者 has1-has4,在 MBR 硬盘中逻辑分区号 只能从 5 开始 MBR 分区表中一个分区最大容量为 2T,因为用 2 字节表示起始结束扇区,且 每个分区的起始柱面必需在这个 disk 的前 2T 内 为了配合这个,引入了新的 INT13,不再使用寄存器传递硬盘的寻址,而是 内存里的地址包(存了 LBA 地址),再分情况处理。 3、虽然 MBR 只占了一个扇区,但是其后的 62 个扇区,即 0 柱面 0 磁道的 63 个 扇区都被占用。且分区是从 0 磁道之后的,操作系统也无法读取到。 一、 FAT32 文件系统 1、基本介绍 FAT32 文件系统中【逻辑盘】由 DBR 及其保留扇区(又称引导区,与 NTFS 相 似)、FAT1、FAT2 和 DATA 四个部分组成
 DBR 及其保留扇区(与 NTFS 类似,但其中 BPB 有 53 字节,扩展 BPB 有 26 字节,含义有区别;从第一个扇区开始,详见下面的区别对比)  FAT1:FAT 的含义是文件分配表,这个是主 FAT  FAT2:是 FAT1 的备份  DATA:数据区,包含目录区域 2、FAT 表 (1)FAT12 16 32 区别 因 FAT 中记录任意一簇的二进制位数,如 FAT16 最大可以表示的簇号为 0xFFFF, 以 32K(最多只支持 64 个扇区)为簇的大小的话,FAT16 可以管理的最 大磁盘空间为:32KB×65535=2048MB,这就是为什么 FAT16 不支持超过 2GB 分区 的原因(DOS 下)。 此外,FAT32 的引导区使用了 3 个扇区,其后还留有若干个【保留扇区】, 而 FAT16 无保留扇区。 此外,FAT32 的 root 区(根目录区)不再是固定区域大小,而 FAT16 是,详 见书本 P18. (2)FAT 表结构及作用 FAT 表有 2 份,FAT1 紧跟 DBR,具体位置由 DBR 的 BPB 参数指定,FAT2 紧跟 FAT1。FAT 表由 FAT 表项构成,把 FAT 表项简称为 FAT 项。  FAT 项(对于 FAT32,是 32 位为一个 FAT 项,即 4 字节表示一个簇) 每一项都有固定编号,从 0 开始,前两个 FAT 项(0 号、1 号)为文件系统 保留使用。用户的数据存放在分区的数据区,以簇为单位,每个簇都会映射到 FAT 表中的唯一一个 FAT 项,从 2 号 FAT 项开始。 用户文件至少占用 1 个簇,若一个文件占用很多个簇,则第一个 FAT 项纪录 下一个 FAT 项的编号(簇号),若文件结束了,则用 0F FF FF FF 表示。 FAT 的主要作用是标明分区存储的介质及簇的使用情况。  定位 FAT 绝对位置的方法
S1.从 MBR 中得到此分区的起始扇区,定位到此扇区 S2.从该扇区的 DBR 中的 BPB 中得知 DBR 的保留扇区、FAT 表的个数、FAT 表的 大小 S3.则 FAT1 起始地址=分区起始扇区+DBR 保留扇区,FAT2=FAT1 起始地址+FAT1 大小 举例: 上面是从第 0 项开始的,第 0 项和第 1 项暂时就不用看了,从第 2 项开始, 为 0F FF FF FF,表示这是一个小文件,只占用一个簇就结束了,然后第 3、4 项也是的。 第 5 簇中存放的数据是 6,这又是一个文件或文件夹的首簇。其内容为第 6 簇,就是说接下来的簇位于第 6 簇——〉FAT 表指引我们到达 FAT 表的第 6 簇指 向,上面写的数据是 7,就是说接下来的簇位于第 7 簇——〉FAT 表指引我们到 达 FAT 表的第 7 簇指向……直到根据 FAT 链读取到扇区相对偏移 0×20~0×24,
也就是第 8 簇,上面写的数据是 9,也就是指向第 9 簇——〉第 9 簇的内容为” 0F FF FF FF”,意即此文件已至尾簇。 2、数据区 数据区在 FAT2 后面,包含 3 部分:【根目录】、【子目录】和【文件内容】, 数据区以簇为单位进行存储,2 号簇被分配给根目录。 (1)根据簇号得到在 FAT 中的扇区号和偏移: 扇区号 = 簇号*4/每个扇区的字节数 + 隐藏扇区数 + 保留扇区数 扇区偏移 = 簇号*4%每个扇区的字节数 根据簇号得到起始扇区号: 簇号起始扇区 = (簇号-2)* 每个簇的扇区数 + 隐藏扇区数 + 保留扇区 数 + FAT 数*每个 FAT 占扇区数 (2)目录项 FDT 分区根目录下的文件和目录都放在根目录区中,子目录中的文件和目录都放 在子目录区中,且每 32 个字节为 1 个【目录项 FDT】,每个目录项记录着一个 目录或者文件(或多对一)。 目录项分为四类:【卷标目录项(分区名)】、【.和..目录项】、【短文 件名目录项】、【长文件名目录项】。FAT 第 0xB 个字节可以判别是长文件目录 项还是短文件目录项。  短文件名目录项(32 个字节) 文件名的“8.3”格式,此格式支持主文件名不能超过 8 字节,扩展名不能 超过 3 字节。短文件名目录始终存放在一个目录项中。 32 个字节的表示如下:
 FAT32 长文件目录项 32 个字节的表示:
FDT 第 1 字节又表明了该文件的状态,它有如下四种取值方式: a. b. c. 00H–目录项的空目录。 E5H–表示该目录项曾经使用过,但文件已被删除。 2EH–表示子目录下的两个特殊文件 “. “或 “.. “目录项 d. 其它任何字符–表示一个文件名(或目录名)的第一个字符的 ASCII 码值.
分享到:
收藏