根据磁盘的第一个扇区一些特征值来区分当期的文件格式
1、FAT32格式的特征:
第0扇区: 0x52----0x56(5个字节),这5个字节的值分别为:0x46 ,0x41 ,0x54,0x33,0x32,其实就是字符“FAT32”的ascall码值。
2、FAT16格式特征:
第0扇区:0x36-----0x3A(5个字节),这5个字节的值分别为:0x46,0x41,0x54,0x31,0x36;字符形式"FAT16"的ascall码值。
3、NTFS格式特征:
第0扇区:0x3------0x6(4个字节),这4个字节的值分别为: 0x4E,0x54,0x46,0x53;字符形式“NTFS”的ascall码值.
Fat32 解析:
读起始扇区到buffer
第0扇区: 0x0D (1个字节),用来存放每个簇多少个扇区 buffer[13]
第0扇区: 0x0E 0x0F(2个字节)用来存放文件分配表的起始扇区buffer[15]*0x100h+buffer[14]
(buffer[15]*0x100h+buffer[14])*200h =起始扇区地址
第0扇区:0x024----0x027(4个字节)用来存放文件分配表占用的扇区数buffer[39]* 0x10000h + buffer[38] * 0x1000h+ buffer[37] *0x100h + buffer[36];
第0扇区:0x02C----0x02F(4个字节)用来存放根目录的起始簇
buffer[47] * 0x10000h+ buffer[46] * 0x1000h+ buffer[45] *0x100h + buffer[44];
第0扇区:0x020----0x023(4个字节)用来存放所读逻辑盘的大小
buffer[35] * 0x10000h+ buffer[34] * 0x1000h+ buffer[33] *0x100h + buffer[32];
读文件分配表的起始扇区
判断每4字节
是结束簇 第1字节 <=255 & 1>=248
第2字节 ==255
第3字节 ==255
第4字节 ==15
是未分配簇 第1字节 ==0
第2字节 ==0
第3字节 ==0
第4字节 ==0
是已分配簇 第1字节*10000h+
第2字节*1000h+
第3字节*100h+
第4字节
大于1 &&小于 4294967280