📄 file_header.h
字号:
#ifndef _FSYS_HEADER_H
#define _FSYS_HEADER_H
typedef unsigned char uchar;
typedef unsigned short uint;
typedef unsigned long ulong;
typedef unsigned char BYTE;
typedef unsigned long DWORD;
typedef unsigned short WORD;
#define min(a,b) (((a)<(b))?(a):(b))
#define max(a,b) (((a)>(b))?(a):(b))
#define msb(x) (((x)>>8)&0x000000FFul)
#define lsb(x) ((x)&0x000000FFul)
typedef struct
{
uchar bJmpBoot[3]; //ofs:0.典型的如:0xEB,0x3E,0x90。3jmp
char bOEMName[8]; //ofs:3.典型的如:“MSWIN4.1”。8oem_name
uint BPB_wBytesPerSec; //ofs:11.每扇区字节数。2bytes_per_sector
uchar BPB_bSecPerClus; //ofs:13.每簇扇区数。1sectors_per_cluster
uint BPB_wReservedSec; //ofs:14.保留扇区数,从DBR 到FAT 的扇区数。2reserved_sectors
uchar BPB_bNumFATs; //ofs:16.FAT 的个数。1fat_copies
uint BPB_wRootEntry; //ofs:17.根目录项数。2root_directory_entries
uint BPB_wTotalSec; //ofs:19.分区总扇区数(<32M 时用)。2number_of_sectors
uchar BPB_bMedia; //ofs:21.分区介质标识,优盘一般用0xF8。1media_descriptor
uint BPB_wSecPerFAT; //ofs:22.每个FAT 占的扇区数。2sectors_per_fat
uint BPB_wSecPerTrk; //ofs:24.每道扇区数。2sectors_per_track
uint BPB_wHeads; //ofs:26.磁头数。2heads
ulong BPB_dHiddSec; //ofs:28.隐藏扇区数,从MBR 到DBR 的扇区数。4headshidden_sectors
ulong BPB_dBigTotalSec; //ofs:32.分区总扇区数(>=32M 时用)。4total_sectors
uchar bDrvNum; //ofs:36.软盘使用0x00,硬盘使用0x80。1drive_number
uchar bReserved1; //ofs:37.保留。1reserved
uchar bBootSig; //ofs:38.扩展引导标记:0x29。1extended_signature
uchar bVolID[4]; //ofs:39.盘序列号。4serial_number
char bVolLab[11]; //ofs:43.“Msdos ”。11volume_label
char FileSysType[8]; //ofs:54.“FAT16 ”。8filesystem
uchar ExecutableCode[448]; //ofs:62.引导代码。bootstrap
uint EndingFlag; //ofs:510.结束标识:0xAA55。signature
}DBR_tag;
void read_MBR(DBR_tag * MBR_t,char *gFormat);
void write_MBR(DBR_tag * MBR_t,char *gFormat);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -