/** @file | |
Fat file system structure and definition. | |
Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR> | |
This program and the accompanying materials | |
are licensed and made available under the terms and conditions of the BSD License | |
which accompanies this distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
**/ | |
#ifndef _FAT_BPB_H_ | |
#define _FAT_BPB_H_ | |
#include "CommonLib.h" | |
#pragma pack(1) | |
typedef struct { | |
// | |
// Fat common field | |
// | |
UINT8 BS_jmpBoot[3]; | |
CHAR8 BS_OEMName[8]; | |
UINT16 BPB_BytsPerSec; | |
UINT8 BPB_SecPerClus; | |
UINT16 BPB_RsvdSecCnt; | |
UINT8 BPB_NumFATs; | |
UINT16 BPB_RootEntCnt; | |
UINT16 BPB_TotSec16; | |
UINT8 BPB_Media; | |
UINT16 BPB_FATSz16; | |
UINT16 BPB_SecPerTrk; | |
UINT16 BPB_NumHeads; | |
UINT32 BPB_HiddSec; | |
UINT32 BPB_TotSec32; | |
// | |
// Fat12/16 specific field | |
// | |
UINT8 BS_DrvNum; | |
UINT8 BS_Reserved1; | |
UINT8 BS_BootSig; | |
UINT32 BS_VolID; | |
CHAR8 BS_VolLab[11]; | |
CHAR8 BS_FilSysType[8]; | |
// | |
// Boot Code and Data | |
// | |
UINT8 Reserved[448]; | |
// | |
// Fat common signature - 0xAA55 | |
// | |
UINT16 Signature; | |
} FAT12_16_BPB_STRUCT; | |
typedef struct { | |
// | |
// Fat common field | |
// | |
UINT8 BS_jmpBoot[3]; | |
CHAR8 BS_OEMName[8]; | |
UINT16 BPB_BytsPerSec; | |
UINT8 BPB_SecPerClus; | |
UINT16 BPB_RsvdSecCnt; | |
UINT8 BPB_NumFATs; | |
UINT16 BPB_RootEntCnt; | |
UINT16 BPB_TotSec16; | |
UINT8 BPB_Media; | |
UINT16 BPB_FATSz16; | |
UINT16 BPB_SecPerTrk; | |
UINT16 BPB_NumHeads; | |
UINT32 BPB_HiddSec; | |
UINT32 BPB_TotSec32; | |
// | |
// Fat32 specific field | |
// | |
UINT32 BPB_FATSz32; | |
UINT16 BPB_ExtFlags; | |
UINT16 BPB_FSVer; | |
UINT32 BPB_RootClus; | |
UINT16 BPB_FSInfo; | |
UINT16 BPB_BkBootSec; | |
UINT8 BPB_Reserved[12]; | |
UINT8 BS_DrvNum; | |
UINT8 BS_Reserved1; | |
UINT8 BS_BootSig; | |
UINT32 BS_VolID; | |
CHAR8 BS_VolLab[11]; | |
CHAR8 BS_FilSysType[8]; | |
// | |
// Boot Code and Data | |
// | |
UINT8 Reserved[420]; | |
// | |
// Fat common signature - 0xAA55 | |
// | |
UINT16 Signature; | |
} FAT32_BPB_STRUCT; | |
typedef union { | |
FAT12_16_BPB_STRUCT Fat12_16; | |
FAT32_BPB_STRUCT Fat32; | |
} FAT_BPB_STRUCT; | |
typedef enum { | |
FatTypeUnknown, | |
FatTypeFat12, | |
FatTypeFat16, | |
FatTypeFat32, | |
FatTypeMax | |
} FAT_TYPE; | |
typedef struct { | |
CHAR8 DIR_Name[11]; | |
UINT8 DIR_Attr; | |
UINT8 DIR_NTRes; | |
UINT8 DIR_CrtTimeTenth; | |
UINT16 DIR_CrtTime; | |
UINT16 DIR_CrtDate; | |
UINT16 DIR_LstAccDate; | |
UINT16 DIR_FstClusHI; | |
UINT16 DIR_WrtTime; | |
UINT16 DIR_WrtDate; | |
UINT16 DIR_FstClusLO; | |
UINT32 DIR_FileSize; | |
} FAT_DIRECTORY_ENTRY; | |
#pragma pack() | |
#define FAT_MAX_FAT12_CLUSTER 0xFF5 | |
#define FAT_MAX_FAT16_CLUSTER 0xFFF5 | |
#define FAT_BS_SIGNATURE 0xAA55 | |
#define FAT_BS_BOOTSIG 0x29 | |
#define FAT_BS_JMP1 0xEB | |
#define FAT_BS_JMP2 0xE9 | |
#define FAT_FILSYSTYPE "FAT " | |
#define FAT12_FILSYSTYPE "FAT12 " | |
#define FAT16_FILSYSTYPE "FAT16 " | |
#define FAT32_FILSYSTYPE "FAT32 " | |
#endif |