③ FIL
功能:记录普通文件(不是目录文件)的详细信息,比如文件对应的目录项位置,文件起始簇号,文件指针,文件大小等。
typedef struct _FIL {
DWORD fptr; // 文件指针,从文件的起始地址开始,以字节为单位计算
DWORD fsize; // 文件大小
DWORD org_clust; // 文件起始簇号
DWORD curr_clust; // 当前簇号
DWORD curr_sect; // 当前扇区地址,buffer缓冲区中存储的是该扇区的内容
#ifndef _FS_READONLY
DWORD dir_sect; // 文件对应的目录项所在扇区号
BYTE* dir_ptr; // 目录项在win[]中的入口地址
#endif
BYTE* buffer; // 指向文件读写缓冲区(512字节)
BYTE flag; // 文件状态标识
BYTE sect_clust; // 当前簇中剩余扇区数
} FIL;
☆ 说明
<1> dir_sect、dir_ptr记录了文件对应在目录中目录项的位置
<2> org_clust记录了文件的起始簇号
<3> fptr为文件指针,记录了文件当前读写的相对于开始处的偏移量(以字节为单位)
<4> curr_clust、curr_sect、sect_clust实际上也是文件读写指针,只不过它记录的是物理偏移量,结合着fptr就可以在物理磁盘上确定文件指针的确切位置。
□ 本文规定
本文所说的文件指针在不同的语境中有两种含义:广义的文件指针指fptr、curr_clust、curr_sect、sect_clust,狭义的文件指针专指fptr。 |