Bootcode[446]启动代码一般是固定的,用于引导 x86,不用管。
分区表项的定义如下:
typedef struct {
uchar BootFlag; //启动标志
CHS StartCHS; //分区开始的柱面、磁头、扇区
uchar SystemID; //分区类型
CHS EndCHS; //分区结束的柱面、磁头、扇区
ulong RelativeSectors; //分区起始扇区数,指分区相对于记录该分区的分区表的扇
区位置之差 (该分区表:LBA=0x0)。
ulong TotalSectors;//分区总扇区数
}PartitionTable;
其中 CHS 为一个柱面、磁头、扇区的结构,定义如下:
struct CHS {
uchar Head; //磁头。
unsigned Sector : 6; //扇区。
unsigned CyH2 : 2; //柱面(高两位)。
uchar CyL8; //柱面(低八位)。
ulong Cylinder() {return (uint(CyH2)*256+CyL8);} //返回柱面值
void SetCylinder(uint Cylinder) //设置柱面值 {
CyH2=(Cylinder>>8)&0x3; CyL8=(Cylinder&0xff);
}
};
例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00
|