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

📄 fat.h

📁 GNU FreeDOS兼容MS DOS很好的东东.
💻 H
字号:
/****************************************************************//*                                                              *//*                            fat.h                             *//*                                                              *//*       FAT File System data structures & declarations         *//*                                                              *//*                      November 26, 1991                       *//*                                                              *//*                      Copyright (c) 1995                      *//*                      Pasquale J. Villani                     *//*                      All Rights Reserved                     *//*                                                              *//* This file is part of DOS-C.                                  *//*                                                              *//* DOS-C is free software; you can redistribute it and/or       *//* modify it under the terms of the GNU General Public License  *//* as published by the Free Software Foundation; either version *//* 2, or (at your option) any later version.                    *//*                                                              *//* DOS-C is distributed in the hope that it will be useful, but *//* WITHOUT ANY WARRANTY; without even the implied warranty of   *//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See    *//* the GNU General Public License for more details.             *//*                                                              *//* You should have received a copy of the GNU General Public    *//* License along with DOS-C; see the file COPYING.  If not,     *//* write to the Free Software Foundation, 675 Mass Ave,         *//* Cambridge, MA 02139, USA.                                    *//****************************************************************/#ifdef MAIN#ifdef VERSION_STRINGSstatic BYTE *fat_hRcsId =    "$Id: fat.h,v 1.19 2004/01/31 15:04:09 bartoldeman Exp $";#endif#endif/* FAT file system attribute bits                                       */#define D_NORMAL        0       /* normal                       */#define D_RDONLY        0x01    /* read-only file               */#define D_HIDDEN        0x02    /* hidden                       */#define D_SYSTEM        0x04    /* system                       */#define D_VOLID         0x08    /* volume id                    */#define D_DIR           0x10    /* subdir                       */#define D_ARCHIVE       0x20    /* archive bit                  */    /* /// Added D_DEVICE bit.  - Ron Cemer */#define D_DEVICE        0x40    /* device bit                   */#define D_LFN (D_RDONLY | D_HIDDEN | D_SYSTEM | D_VOLID)#define D_ALL (D_RDONLY | D_HIDDEN | D_SYSTEM | D_DIR | D_ARCHIVE)/* FAT file name constants                                              */#define FNAME_SIZE              8#define FEXT_SIZE               3/* FAT deleted flag                                                     */#define DELETED         '\x5'    /* if first char, delete file   */#define EXT_DELETED     '\xe5'   /* external deleted flag *//* Test for 16 bit or 12 bit FAT                                        */#define SIZEOF_CLST16   2#define SIZEOF_CLST32   4/* FAT cluster special flags                                            */#define FREE                    0x000#ifdef WITHFAT32#define LONG_LAST_CLUSTER       0x0FFFFFFFUL#define LONG_BAD                0x0FFFFFF7UL#else#define LONG_LAST_CLUSTER       0xFFFF#define LONG_BAD                0xFFF7#endif#define MASK16                  0xFFF8#define BAD16                   0xFFF7#define MASK12                  0xFF8#define BAD12                   0xFF7/* magic constants: even though FF7 is BAD so FF6 could be a valid cluster   no., MS docs specify that FF5 is the maximal possible cluster number   for FAT12; similar for 16 and 32 */#define FAT_MAGIC       4085#define FAT_MAGIC16     65525U#define FAT_MAGIC32     268435455UL/* int ISFAT32(struct dpb FAR *dpbp);*/#define ISFAT32(x) _ISFAT32(x)/*#define _ISFAT32(dpbp)  (((dpbp)->dpb_size)>FAT_MAGIC16 && ((dpbp)->dpb_size)<=FAT_MAGIC32 )*/#define _ISFAT32(dpbp)  (((dpbp)->dpb_fatsize)==0)#define ISFAT16(dpbp)   (((dpbp)->dpb_size)>FAT_MAGIC   && ((dpbp)->dpb_size)<=FAT_MAGIC16 )#define ISFAT12(dpbp)   ((((dpbp)->dpb_size)-1)<FAT_MAGIC)/* dpb_size == 0 for FAT32, hence doing -1 here *//* FAT file system directory entry                                      */struct dirent {  char dir_name[FNAME_SIZE + FEXT_SIZE];   /* Filename + extension in FCB format */  UBYTE dir_attrib;             /* File Attribute               */  UBYTE dir_case;               /* File case                    */  UBYTE dir_crtimems;           /* Milliseconds                 */  UWORD dir_crtime;             /* Creation time                */  UWORD dir_crdate;             /* Creation date                */  UWORD dir_accdate;            /* Last access date             */  UWORD dir_start_high;         /* High word of the cluster     */  time dir_time;                /* Time file created/updated    */  date dir_date;                /* Date file created/updated    */  UWORD dir_start;              /* Starting cluster             */  /* 1st available = 2            */  ULONG dir_size;               /* File size in bytes           */};struct lfn_entry {  UBYTE lfn_id;                 /* Sequence number for this LFN entry      */  UNICODE lfn_name0_4[5];       /* First 5 characters of LFN               */  UBYTE lfn_attrib;             /* LFN attribute, should be D_LFN == 0x0f  */  UBYTE lfn_reserved1;  UBYTE lfn_checksum;           /* Checksum for the corresponding 8.3 name */  UNICODE lfn_name5_10[6];      /* Next 6 characters of LFN                */  UWORD lfn_reserved2;  UNICODE lfn_name11_12[2];     /* Last 2 characters of LFN                */};/*                                                                      *//* filesystem sizeof(dirent) - may be different from core               *//*                                                                      */#ifdef WITHFAT32struct dpb;CLUSTER getdstart(struct dpb FAR *dpbp, struct dirent *dentry);void setdstart(struct dpb FAR *dpbp, struct dirent *dentry, CLUSTER value);BOOL checkdstart(struct dpb FAR *dpbp, struct dirent *dentry, CLUSTER value);#else#define getdstart(dpbp, dentry) \  ((dentry)->dir_start)#define setdstart(dpbp, dentry, value) \  (((dentry)->dir_start) = (UWORD)(value))#define checkdstart(dpbp, dentry, value) \  (((dentry)->dir_start) == (UWORD)(value))#endif#define DIR_NAME        0#define DIR_EXT         FNAME_SIZE#define DIR_ATTRIB      (FNAME_SIZE+FEXT_SIZE)#define DIR_RESERVED    (FNAME_SIZE+FEXT_SIZE+1)#define DIR_TIME        (FNAME_SIZE+FEXT_SIZE+11)#define DIR_DATE        (FNAME_SIZE+FEXT_SIZE+13)#define DIR_START       (FNAME_SIZE+FEXT_SIZE+15)#define DIR_SIZE        (FNAME_SIZE+FEXT_SIZE+17)#define DIRENT_SIZE     32

⌨️ 快捷键说明

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