⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fat.h

📁 mp3代码 要用的干净下啊 希望用东西共享啊
💻 H
字号:
#ifndef _FAT_H_
#define _FAT_H_
typedef struct {
        uint8           BS_jmpBoot[3];          //跳到引导代码的指令.可为EBxx90和E9xxxx两种,xx表示任意允许的8bit值的字节          
        uint8           BS_OEMName[8];          //OEM名字字符串,通常为“MSWIN4.1”        
        uint16          BPB_BytesPerSec;        //每扇区字节数,该值可为512,1024,2048或4096          
        uint8           BPB_SecPerClus;        	//每簇的扇区数,值为2的n次方,范围1~128          
        uint16          BPB_RsvdSecCnt;        	//在开始处保留区域的保留扇区数.该值不能为0,对于FAT32,其值为32          
        uint8           BPB_NumFATs;           	//卷中FAT数据结构的个数,对任何类型的FAT卷,其值永远为2个          
        uint16          BPB_RootEntCnt;        	//对于FAT12/FAT16卷,在根目录的32字节的目录个数,对FAT32,永远设定为0          
        uint16          BPB_TotSec16;          	//卷中的扇区的数量(用16bit表示),如果为0,则BPB_TotSec32必须为非零.对于FAT32,必须为0         
        uint8           BPB_Media;             	//介质标志字: 0xF8表示不可移动介质,0xF0表示可移动介质                 
        uint16          BPB_FATSz16;           	//对于FAT12/FAT16,表示第一个FAT占用的扇区数,对于FAT32卷必须为0          
        uint16          BPB_SecPerTrk;        	//对于中断13,每磁道的扇区数          
        uint16          BPB_NumHeads;        	//对于中断13,磁头的数量             
        uint32           BPB_HiddSec;      		//包含FAT卷的分区的隐含扇区的数量               
        uint32           BPB_TotSec32;    		//卷中扇区的数量,用4Byte表示               
        uint8           BS_DrvNum;            	// 中断13的驱动器号                  
        uint8           BS_Reservedl;        	//用于NT系统(保留),对于FAT卷,永远为0           
        uint8           BS_BootSig;        		//扩展引导的标志                   
        uint32           BS_VolID;        		//卷序列号                   
        uint8           BS_VolLab[11];    		//卷标,用11个字节记录在根目录下            
        uint8           BS_FilSysType[8];       //文件系统标签,其值为: “FAT12 ” , “FAT16 ” 或 “FAT ”            
        uint8           ExecutableCode[448];    //可执行代码   
        uint8           ExecutableMarker[2];    //可执行代码标志(0x55 0xAA)   
} FAT_BPB;

#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 ATTR_LONG_NAME ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID              


typedef struct {
        uint8           FileName[11];          //文件名              
        uint8           FileAttrib;       	   //定义文件属性                       
        uint8           UnUsed[10];            //Windows NT 保留                     
        uint8           FileUpdateTime[2];     //文件的最近修改时间            
        uint8           FileUpdateData[2];     //文件的最近修改日期             
        uint16          Start;                 //文件的起始簇簇号                  
        uint32           Size;                  //文件的长度                  
} DIR;

typedef struct {
        uint8           BPB_SecPerClus;     //每簇的扇区数,值为2的n次方,范围1~128             
        uint16          BPB_RsvdSecCnt;     //在开始处保留区域的保留扇区数.该值不能为0.对于FAT32,其值为32            
        uint8           BPB_NumFATs;        //卷中FAT数据结构的个数,对任何类型的FAT卷,其值永远为2个            
        uint16          BPB_RootEntCnt;     //对于FAT12/FAT16卷,在根目录的32字节的目录个数,对FAT32,永远设定为0            
        uint16          BPB_TotSec16;       //卷中的扇区的数量(用16bit表示),如果为0,则BPB_TotSec32必须为非零,对于FAT32,必须为0            
        uint16          BPB_FATSz16;        //对于FAT12/FAT16,表示第一个FAT占用的扇区数,对于FAT32卷必须为0             
        uint32           BPB_HiddSec;        //包含FAT卷的分区的隐含扇区的数量             
        uint32           DirStartSec;        //目录区的起始扇区            
        uint32           DataStartSec;                   
        uint16          DirSecCount;        //目录区占用的扇区数             
} FileSystemInfo;

typedef struct {
        uint16 m;
        uint32 i;
        uint16 ClusID;
        uint32 LBA;
} FATFileIndex;  
extern void FAT_Init(void);
extern uint32 FAT_FileOpen(uint8 Name[11], uint32 Start);
extern uint16 FAT_FileRead(uint32 Length, void* Data);
extern void FAT_FileWrite(uint32 Length, void* Data);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -