FAT32结构

/*
注意要1字节对齐
*/
typedef struct {
BYTE      JMP[3];
BYTE      OEM[8];
WORD      BytesPerSector;
BYTE      SectorsPerCluster;
WORD      ReserveSectors;
BYTE      FATNum;
WORD      BootRecord;
WORD      Sector;
BYTE      MediaDescription;
WORD      SectorsPerFATForSmallVolume;
    WORD      SectorsPerTrack;
WORD      MagnetismHead;
DWORD     HideSectors;
DWORD     SectorOnBigColume;
DWORD     SectorsPerFAT;
WORD      Sign;
WORD      Version;
DWORD     FirstClusterOfBootDir;
WORD      FSMegSector;
WORD      BackUpBootSector;
BYTE      Reserve[12];
BYTE      BiosDevice;
BYTE      UnUsed;
BYTE      ExtendBootSign;
DWORD     VolumeSerial;
BYTE      VolumeSymbol;
BYTE      FileSystem[5];
BYTE      Blank[433];
    WORD      EndSignOfBPB;
} FAT_BPB,*PFAT_BPB ;
////////////////////////////////////////////////////////////
/*
32字节的目录项
*/
typedef struct {
    BYTE      FileName[8];
BYTE      NameExtend[3];
BYTE      Attribute;
BYTE      Reserve;
BYTE      CreateTimeMS;
WORD      CreateTime;
WORD      CreateDate;
WORD      LastVisitTime;
WORD      StartClusterH;
WORD      RenewTime;
WORD      RenewDate;
WORD      StartClusterL;
DWORD     FileLength;
} FAT_FDT, *PFAT_FDT;
////////////////////////////////////////////////////////////
typedef struct {
BYTE    Order;
BYTE    FirName[10];
BYTE    Attribute;
    BYTE    Species;
BYTE    CheckSum;
    BYTE    SecName[12];
WORD    StartCluster;
BYTE    ThiName[4];
} FAT_LONGNAME,*PFAT_LONGNAME;
////////////////////////////////////////////////////////////
typedef struct __CHS
{
BYTEStartHead;
WORDStartSecter:6;
WORDStartSylinder:10;
}_CHS,_pCHS;
typedef struct __PartitionTable
{
BYTE BootFlag; /*启动标志*/
_CHS StartCHS; /*分区开始的柱面、磁头、扇区*/
BYTE SystemID; /*分区类型*/
_CHS EndCHS; /*分区结束的柱面、磁头、扇区*/
DWORD RelativeSectors; /*分区相对扇区数,指分区相对于记录该分区的分区表的扇区位置之差*/
DWORD TotalSectors; /*分区总扇区数*/ 
}_PartitionTable,*_pPartitionTable;
////////////////////////////////////////////////////////////
#pragma pack(8)//为8字节对齐
typedef struct {
INT    BytesPerSector;
INT    SecPerC;  //每蔟扇区数
    INT    DBRSize;
INT    FATNum;
UINT   FATSize;
    INT    FirCluOfBootDir;
UINT    BytesPerCluster;
} FAT_VOLUME_INFO,*PFAT_VOLUME_INFO;
typedef struct {
DWORD  StartLcn;
DWORD  NumsOfLcn;
} FILEBITMAP,*PFILEBITMAP;


文章标签:

本文链接: http://lmroot.com/blog/?id=11,尊重共享,欢迎转载,请自觉添加本文链接,谢谢!

版权声明: 本文除特别说明外均由原创

分享本文:
呃 本文暂时没人评论 来添加一个吧

分享:

支付宝

微信

歌曲 - 歌手
0:00