?? fat.h
字號(hào):
#ifndef _fat_h_
#define _fat_h_
//Block Size in Bytes
#define BlockSize 512
//Master Boot Record
#define MASTER_BOOT_RECORD 0
//BPB Address only in mmc card or usb disk
#define BIOS_PARAMETER_BLOCK 0
//Volume Boot Record location in Master Boot Record
#define VBR_ADDR 0x1C6
//define ASCII
#define SPACE 0x20
#define DIR_ENTRY_IS_FREE 0xE5
#define FIRST_LONG_ENTRY 0x01
#define SECOND_LONG_ENTRY 0x42
//define DIR_Attr
#define ATTR_LONG_NAME 0x0F
#define ATTR_READ_ONLY 0x01
#define ATTR_HIDDEN 0x02
#define ATTR_SYSTEM 0x04
#define ATTR_VOLUME_ID 0x08
#define ATTR_DIRECTORY 0x10
#define ATTR_ARCHIVE 0x20
#define FAT_Flg_12 0x00
#define FAT_Flg_16 0x01
#define FAT_Flg_32 0x02
//fat32 BPB結(jié)構(gòu),包括擴(kuò)展BPB
struct BootSec32
{
unsigned char BS_jmpBoot[3]; //jmp code
unsigned char BS_OEMName[8]; //oem and os like dos5.0
unsigned int BPB_BytesPerSec; //扇區(qū)字節(jié)數(shù)
unsigned char BPB_SecPerClus; //每簇扇區(qū)數(shù)
unsigned int BPB_RsvdSecCnt; //保留扇區(qū)數(shù)
unsigned char BPB_NumFATs; //FAT數(shù)目
unsigned int BPB_RootEntCnt; //根目錄項(xiàng)數(shù) 0
unsigned int BPB_TotSec16; //小扇區(qū)總數(shù) 0
unsigned char BPB_Media; //媒體描述符
unsigned int BPB_FATSz16; //每FAT扇區(qū)數(shù)fat32不用為0
unsigned int BPB_SecPerTrk; //每道扇區(qū)數(shù)
unsigned int BPB_NumHeads; //磁頭數(shù)
unsigned long BPB_HiddSec; //隱藏扇區(qū)數(shù)
unsigned long BPB_TotSec32; //總扇區(qū)數(shù)
unsigned long BPB_FATSz32; //每FAT扇區(qū)數(shù)fat32
unsigned int BPB_ExtFlag; //fat32擴(kuò)展標(biāo)志
unsigned int BPB_FileSysVer; //fat32文件系統(tǒng)版本
unsigned long BPB_RootCluNum; //根目錄簇號(hào)
unsigned int BPB_FileSysInf; //文件系統(tǒng)信息扇區(qū)號(hào)
unsigned int BPB_BootBack; //引導(dǎo)扇區(qū)備份號(hào)
unsigned char BPB_Rsvd[12]; //保留空間
unsigned char BPB_PhyDriNum; //物理驅(qū)動(dòng)器號(hào)
unsigned char BPB_Rsvd1; //保留
unsigned char BPB_ExtBootSig; //擴(kuò)展引導(dǎo)標(biāo)簽
unsigned long BPB_VolumeSer; //分區(qū)序號(hào)
unsigned char BPB_VolumeLab[11]; //卷標(biāo)
unsigned char BPB_SysID[8]; //系統(tǒng)ID
};
//fat12/16 BPB結(jié)構(gòu),包括擴(kuò)展BPB
struct BootSec
{
unsigned char BS_jmpBoot[3]; //jmp code 0x00
unsigned char BS_OEMName[8]; //oem and os like dos5.0 0x03
unsigned int BPB_BytesPerSec; //扇區(qū)字節(jié)數(shù) 0x0B
unsigned char BPB_SecPerClus; //每簇扇區(qū)數(shù) 0x0D
unsigned int BPB_RsvdSecCnt; //保留扇區(qū)數(shù) 0x0E
unsigned char BPB_NumFATs; //FAT數(shù)目 0x10
unsigned int BPB_RootEntCnt; //根目錄項(xiàng)數(shù) 512 0x11
unsigned int BPB_TotSec16; //小扇區(qū)總數(shù) <65536時(shí)使用 0x13
unsigned char BPB_Media; //媒體描述符 0x15
unsigned int BPB_FATSz16; //每FAT扇區(qū)數(shù) 0x16
unsigned int BPB_SecPerTrk; //每道扇區(qū)數(shù) 0x18
unsigned int BPB_NumHeads; //磁頭數(shù)
unsigned long BPB_HiddSec; //隱藏扇區(qū)數(shù)
unsigned long BPB_TotSec32; //大扇區(qū)數(shù) 當(dāng)小扇區(qū)數(shù)為0時(shí)使用這里
unsigned char BPB_PhyDriNum; //物理驅(qū)動(dòng)器號(hào)
unsigned char BPB_Rsvd1; //保留
unsigned char BPB_ExtBootSig; //擴(kuò)展引導(dǎo)標(biāo)簽
unsigned long BPB_VolumeSer; //卷序號(hào)
unsigned char BPB_VolumeLab[11]; //卷標(biāo)
unsigned char BPB_SysID[8]; //系統(tǒng)ID
};
struct DirEntry
{
unsigned char DIR_Name[11]; //文件名,沒有.
unsigned char DIR_Attr; //文件屬性,自低至高,只讀、隱藏、系統(tǒng)、卷標(biāo)、子目錄、歸檔
unsigned char DIR_NTRes; //系統(tǒng)保留
unsigned char DIR_CrtTimeTenth; //創(chuàng)建時(shí)間的10毫秒位
unsigned int DIR_CrtTime; //創(chuàng)建時(shí)間
unsigned int DIR_CrtDate; //創(chuàng)建日期
unsigned int DIR_LastAccDate; //最后訪問日期
unsigned int DIR_FstClusHI; //文件起始簇號(hào)高16位
unsigned int DIR_WrtTime; //最近修改時(shí)間
unsigned int DIR_WrtDate; //最近修改日期
unsigned int DIR_FstClusLO; //文件起始簇號(hào)的低16位
unsigned long DIR_FileSize; //文件長度
};
unsigned int fat_read_dir_ent(unsigned long dir_cluster,unsigned int Entry_Count,unsigned long *Size,unsigned char *Dir_Attrib,unsigned char *buff);
unsigned char fat_search_file (unsigned char *File_Name,unsigned long *Cluster,unsigned long *Size,unsigned char *Dir_Attrib,unsigned char *buff);
unsigned char fat_read_file(unsigned int Cluster,unsigned char *buff,unsigned long BlockCount,unsigned char *blockserial);
void fat_load(unsigned long Cluster,unsigned long *Block,unsigned char *TMP_Buffer);
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -