bootsector710与bpb710,你说的前者包含后者是对的。但不是重复的。
bootsector710的结构体定义如下:
//FAT32 DBR区,操作系统引导记录区
typedef __packed struct
{
BYTEbsJump[3];// jump inst E9xxxx or EBxx90
BYTEbsOemName[8];// OEM name and version
BYTEbsBPB[53];// BIOS parameter block
BYTEbsExt[26];// Bootsector Extension
BYTEbsBootCode[418];// pad so structure is 512b
BYTEbsBootSectSig2;// boot sector signature byte 0x00
BYTEbsBootSectSig3;// boot sector signature byte 0x00
BYTEbsBootSectSig0;// boot sector signature byte 0x55
BYTEbsBootSectSig1;// boot sector signature byte 0xAA
#define BOOTSIG0 0x55
#define BOOTSIG1 0xaa
#define BOOTSIG2 0x00
#define BOOTSIG3 0x00
}bootsector710;
这个主要为了获取bsJump这个参数,以及bsBPB。
而bpb710,则是对bsBPB的解析。
这样,两个结构体分别解析不同的字段,从而得到各种参数。
第一次读取的是MBR,后面读取的是DBR。
思路看代码基本就明白了吧?初始化主要就是完成了获取文件系统的各种参数,比如:文件系统的类型(FAT12/16/32),文件系统的根目录所在的扇区,每个扇区的字节数,每个簇的扇区数,FAT表所在扇区等等这些信息。
在有了这些信息之后,就可以按部就班的去读取各个文件,及数据了。
具体请看《FAT文件系统原理》一文。
bootsector710与bpb710,你说的前者包含后者是对的。但不是重复的。
bootsector710的结构体定义如下:
//FAT32 DBR区,操作系统引导记录区
typedef __packed struct
{
BYTEbsJump[3];// jump inst E9xxxx or EBxx90
BYTEbsOemName[8];// OEM name and version
BYTEbsBPB[53];// BIOS parameter block
BYTEbsExt[26];// Bootsector Extension
BYTEbsBootCode[418];// pad so structure is 512b
BYTEbsBootSectSig2;// boot sector signature byte 0x00
BYTEbsBootSectSig3;// boot sector signature byte 0x00
BYTEbsBootSectSig0;// boot sector signature byte 0x55
BYTEbsBootSectSig1;// boot sector signature byte 0xAA
#define BOOTSIG0 0x55
#define BOOTSIG1 0xaa
#define BOOTSIG2 0x00
#define BOOTSIG3 0x00
}bootsector710;
这个主要为了获取bsJump这个参数,以及bsBPB。
而bpb710,则是对bsBPB的解析。
这样,两个结构体分别解析不同的字段,从而得到各种参数。
第一次读取的是MBR,后面读取的是DBR。
思路看代码基本就明白了吧?初始化主要就是完成了获取文件系统的各种参数,比如:文件系统的类型(FAT12/16/32),文件系统的根目录所在的扇区,每个扇区的字节数,每个簇的扇区数,FAT表所在扇区等等这些信息。
在有了这些信息之后,就可以按部就班的去读取各个文件,及数据了。
具体请看《FAT文件系统原理》一文。
举报