📄 fs_fat.h
字号:
/*
$Log: fs_fat.h,v $
Revision 1.5 2007/12/12 02:39:04 Fangzhenfu
文件系统更新! FLASH 底层更新!
Revision 1.4 2007/10/08 02:58:14 Lingzhaojun
添加版本自动注释脚本
*/
#ifndef _FS_FAT_H_
#define _FS_FAT_H_
#undef EXT
#ifdef _IN_FS_FAT_
#define EXT
#else
#define EXT extern
#endif
typedef __packed struct tagFS_FDT
{
uint8 Name[11]; //短文件名主文件名
uint8 Attr; //文件属性
uint8 NTRes; //保留给NT
uint8 CrtTimeTenth; //建立时间(fat16保留)
uint16 CrtTime; //建立时间(fat16保留)
uint16 CrtDate; //建立日期(fat16保留)
uint16 LstAccDate; //最后访问日期(fat16保留)
uint16 FstClusHI; //起始簇号高两个字节(fat16保留)
uint16 WrtTime; //最后写时间
uint16 WrtDate; //最后写日期
uint16 FstClusLO; //起始簇(cluster)号低两个字节
uint32 FileSize; //文件大小
} FS_FDT;
typedef __packed struct tagFS_LONG_FDT
{
uint8 Order;
char Name1[10];
uint8 Attr;
uint8 Type;
uint8 Chksum;
char Name2[12];
uint16 FstClusLO;
char Name3[4];
}FS_LONG_FDT;
typedef __packed struct _FAT_DIR_
{
uint8 Name[11];
uint8 Attr;
uint8 NTRes;
uint8 CrtTimeTeenth;
uint16 CrtTime;
uint16 CrtDate;
uint16 LastAccDate;
uint16 FstClusHI;
uint16 WrtTime;
uint16 WrtData;
uint16 FstClusLO;
uint32 FileSize;
}FAT_DIR;
typedef __packed struct _FAT_LDIR_
{
uint8 Ord;
uint8 Name1[10];
uint8 Attr;
uint8 Type;
uint8 ChkSum;
uint8 Name2[12];
uint16 FstClusLO;
uint8 Name3[4];
}FAT_LDIR;
typedef union tagFATENTRY
{
FAT_DIR SEntry;
FAT_LDIR LEntry;
}FS_FAT_ENTRY;
typedef struct tagFSDskSizeToSecPerClus
{
uint32 DiskSize; /*磁盘大小(扇区)*/
uint32 SecPerClus; /*每簇扇区数*/
}FS_DskSizeToSecPerClus;
typedef struct tagFILE
{
uint16 Flags; //一些标志
char Name[11]; //文件名
uint32 DirClus; //所在目录开始簇号
uint32 FileSize; //文件大小
uint32 FstClus; //起始簇号
uint32 Clus; //当前簇号
uint32 Offset; //文件指针偏移量
uint32 RefClus; //当前簇号
uint32 RefOffset; //文件指针偏移量
FS_VOLUME *pVolume;
int16 err;
}FS_FILE, *PFILE;
typedef struct tagFS_FIND_DATA
{
FS_VOLUME *pVolume;
uint32 Index;
uint32 Clus; //当前簇号
} FS_FIND_DATA;
typedef struct tagFILE_LFDT_LINK
{
FS_LONG_FDT FileLFdt[FS_MAX_LFN_ENTRIES];
FS_FDT FileFdt;
uint8 Num;
}FILE_LFDT_LINK;
int FS_FAT_CheckUnit(FS_VOLUME *pVolume);
void FS_FAT_MakeRealname(char *pEntryName, const char *pOrgName);
size_t FS_FAT_fread(void *pData, uint32 NumBytes, FS_FILE *hFile);
int FS_FAT_fclose(FS_FILE *pFile);
uint32 FS_FAT_GetNextClus(FS_VOLUME *pVolume, uint32 Index, uint32 Count);
void FS_FAT_UpdataFreeMem(FS_VOLUME *pVolume, int32 size);
uint32 FS_FAT_GetDirClusIndex(FS_VOLUME *pVolume, const char *pFullName, const char **pFileName);
int FS_FAT_CreateFile(FS_FILE *pFile, char *FileName);
size_t FS_FAT_fwrite(const void *pData, uint32 NumBytes, FS_FILE *pFile);
void FS_FAT_DelClusChain(FS_VOLUME *pVolume, uint32 Index);
int FS_FAT_AddClus(FS_VOLUME *pVolume, int32 Index);
uint32 FS_FAT_GetTotalFiles(const char *Path, char *ExtName);
void FS_FAT_GotoRootDir(FS_VOLUME *pVolume, char* ExtName);
void FS_FAT_GotoNextDir(FS_VOLUME *pVolume, char* ExtName);
int FS_FAT_GetTotalSubDir(const char *Path);
void FS_FAT_WriteDBRSector(const FS_DEVICE_TYPE *pDev, uint8 type);
void FS_FAT_WriteRootDir(FS_VOLUME *pVolume, uint8 type);
void FS_FAT_CopyFat(FS_VOLUME *pVolume, uint8 FatNum);
void FS_FAT_WriteFAT(FS_VOLUME *pVolume, uint8 type);
uint32 FS_FAT_ClusChainCopy(FS_VOLUME *pVolume1, uint32 FstClus, uint32 SecTotal, FS_VOLUME *pVolume2);
uint8 FS_FAT_CopyFileByClus(FS_VOLUME *pVolumeSrc, FILE_LFDT_LINK *pLfdtLink,
FS_VOLUME *pVolumeDst, uint32 DirClus2);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -