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

📄 fat._h

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

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

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

#endif

⌨️ 快捷键说明

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