📄 fatlite.h
字号:
/* * $Log: P:/user/amir/lite/vcs/fatlite.h_v $ Rev 1.13 11 Sep 1997 15:24:04 danig FlashType -> unsigned short Rev 1.12 10 Aug 1997 18:02:26 danig Comments Rev 1.11 04 Aug 1997 13:18:28 danig Low level API Rev 1.10 07 Jul 1997 15:23:24 amirban Ver 2.0 Rev 1.9 21 Oct 1996 18:10:10 amirban Defragment I/F change Rev 1.8 17 Oct 1996 16:19:24 danig Audio features Rev 1.7 20 Aug 1996 13:22:44 amirban fsGetBPB Rev 1.6 14 Jul 1996 16:47:44 amirban Format Params Rev 1.5 04 Jul 1996 18:19:24 amirban New fsInit and modified fsGetDiskInfo Rev 1.4 09 Jun 1996 18:16:56 amirban Added fsExit Rev 1.3 03 Jun 1996 16:20:48 amirban Separated fsParsePath Rev 1.2 19 May 1996 19:31:16 amirban Got rid of aliases in IOreq Rev 1.1 12 May 1996 20:05:38 amirban Changes to findFile Rev 1.0 20 Mar 1996 13:33:20 amirban Initial revision. *//************************************************************************//* *//* FAT-FTL Lite Software Development Kit *//* Copyright (C) M-Systems Ltd. 1995-1996 *//* *//************************************************************************/#ifndef FATLITE_H#define FATLITE_H#ifdef __cplusplusextern "C" {#endif#include "flbase.h"#include "dosformt.h"typedef unsigned FLHandle; /* Handle of an open file or drive. */ /* Actually an index to file table or */ /* drive table. *//*----------------------------------------------------------------------*//* P a t h - N a m e s *//* *//* A path-name is represented as an array of SimplePath records. *//* Each SimplePath record holds a directory or file name segment, with *//* the full 8.3 (spaces not compressed) name. *//* *//* Path-names always start at the root directory. There is no current *//* directory. The directories pointers '.' and '..' can be specified *//* as the 'name' part of the path-segment, except at the root-directory.*//* *//* Lower-case letters are different from upper-case. To be compatible *//* with DOS, file-names should be upper-case. File names may contain *//* any character, but files starting with hex E5 are considered deleted *//* according to DOS convention. *//* *//* A null (hex 0) in the first byte of the name field denotes that the *//* path ends here. *//* *//* Note that paths can be specified as strings: For example: *//* *//* "UTIL FATLITE H " ===> "\UTIL\FATLITE.H". *//* "" ===> "\" (root directory) *//* "AUTOEXECBAT" ===> "\AUTOEXEC.BAT" *//* "UTIL .. " ===> "\UTIL\.." (root directory) *//* *//* The optional service flParsePath may be used to convert regular *//* string paths to this format. *//*----------------------------------------------------------------------*/typedef struct { char name[8]; /* name part of path segment */ /* A hex 0 in 1st character indicates end of path */ char ext[3]; /* extension part of path segment */} FLSimplePath;/*----------------------------------------------------------------------*//* I O r e q *//* *//* IOreq is a common structure passed to all file-system functions. *//* Refer to the description of individual functions for specific usage *//* of fields. Some fields have different names when used by different *//* functions, hence the use of unions. *//* *//*----------------------------------------------------------------------*/typedef struct { FLHandle irHandle; /* Handle of file or drive for operation*/ unsigned irFlags; /* function-specific flags */ FLSimplePath FAR1 * irPath; /* path of file for operation */ void FAR1 * irData; /* Pointer to user-buffer for operation */ long irLength; /* No. of bytes, size or position for */ /* operation */} IOreq;/* definiftions for absolute read & write */#define irSectorCount irFlags#define irSectorNo irLength/* definitions for physical read & write */#define irByteCount irFlags#define irAddress irLength/* definitions for physical erase */#define irUnitCount irFlags#define irUnitNo irLength/*----------------------------------------------------------------------*//* f l C a l l *//* *//* Common entry-point to all file-system functions. Macros are *//* to call individual function, which are separately described below. *//* *//* Parameters: *//* function : file-system function code (listed below) *//* ioreq : IOreq structure *//* *//* Returns: *//* FLStatus : 0 on success, otherwise failed *//*----------------------------------------------------------------------*/typedef enum {FL_MOUNT_VOLUME, FL_DISMOUNT_VOLUME, FL_CHECK_VOLUME, FL_OPEN_FILE, FL_CLOSE_FILE, FL_READ_FILE, FL_WRITE_FILE, FL_SEEK_FILE, FL_FIND_FILE, FL_FIND_FIRST_FILE, FL_FIND_NEXT_FILE, FL_GET_DISK_INFO, FL_DELETE_FILE, FL_RENAME_FILE, FL_DEFRAGMENT_VOLUME, FL_FORMAT_VOLUME, FL_MAKE_DIR, FL_REMOVE_DIR, FL_ABS_READ, FL_ABS_WRITE, FL_ABS_DELETE, FL_GET_BPB, FL_SPLIT_FILE, FL_JOIN_FILE, FL_GET_PHYSICAL_INFO, FL_PHYSICAL_READ, FL_PHYSICAL_WRITE, FL_PHYSICAL_ERASE, FL_DONT_MONITOR_FAT} FLFunctionNo;FLStatus flCall(FLFunctionNo functionNo, IOreq FAR2 *ioreq);/*----------------------------------------------------------------------*//* f l M o u n t V o l u m e *//* *//* Mounts, verifies or dismounts the Flash medium. *//* *//* In case the inserted volume has changed, or on the first access to *//* the file system, it should be mounted before file operations can be *//* done on it. *//* Mounting a volume has the effect of discarding all open files (the *//* files cannot be properly closed since the original volume is gone), *//* and turning off the media-change indication to allow file processing *//* calls. *//* *//* The volume automatically becomes unmounted if it is removed or *//* changed. *//* *//* Parameters: *//* irHandle : Drive number (0, 1, ...) *//* *//* Returns: *//* FLStatus : 0 on success, otherwise failed *//*----------------------------------------------------------------------*/#define flMountVolume(ioreq) flCall(FL_MOUNT_VOLUME,ioreq)/*----------------------------------------------------------------------*//* f l D i s m o u n t V o l u m e *//* *//* Dismounts the volume, closing all files. *//* This call is not normally necessary, unless it is known the volume *//* will soon be removed. *//* *//* Parameters: *//* irHandle : Drive number (0, 1, ...) *//* *//* Returns: *//* FLStatus : 0 on success, otherwise failed *//*----------------------------------------------------------------------*/#define flDismountVolume(ioreq) flCall(FL_DISMOUNT_VOLUME,ioreq)/*----------------------------------------------------------------------*//* f l C h e c k V o l u m e *//* *//* Verifies that the current volume is mounted. *//* *//* Parameters: *//* irHandle : Drive number (0, 1, ...) *//* *//* Returns: *//* FLStatus : 0 on success, otherwise failed *//*----------------------------------------------------------------------*/#define flCheckVolume(ioreq) flCall(FL_CHECK_VOLUME,ioreq)#ifdef DEFRAGMENT_VOLUME/*----------------------------------------------------------------------*//* f l D e f r a g m e n t V o l u m e *//* *//* Performs a general defragmentation and recycling of non-writable *//* Flash areas, to achieve optimal write speed. *//* *//* NOTE: The required number of sectors (in irLength) may be changed *//* (from another execution thread) while defragmentation is active. In *//* particular, the defragmentation may be cut short after it began by *//* modifying the irLength field to 0. *//* *//* Parameters: *//* irHandle : Drive number (0, 1, ...) *//* irLength : Minimum number of sectors to make available *//* for writes. *//* *//* Returns: *//* irLength : Actual number of sectors available for writes *//* FLStatus : 0 on success, otherwise failed *//*----------------------------------------------------------------------*/#define flDefragmentVolume(ioreq) flCall(FL_DEFRAGMENT_VOLUME,ioreq)#endif /* DEFRAGMENT_VOLUME */#ifdef FORMAT_VOLUME/*----------------------------------------------------------------------*//* f l F o r m a t V o l u m e *//* *//* Formats a volume, writing a new and empty file-system. All existing *//* data is destroyed. Optionally, a low-level FTL formatting is also *//* done. *//* Formatting leaves the volume in the dismounted state, so that a *//* flMountVolume call is necessary after it. *//* *//* Parameters: *//* irHandle : Drive number (0, 1, ...) *//* irFlags : NO_FTL_FORMAT: Do FAT formatting only *//* FTL_FORMAT: Do FTL & FAT formatting *//* FTL_FORMAT_IF_NEEDED: Do FTL formatting only *//* if current format is invalid *//* irData : Address of FormatParams structure to use *//* (defined in dosformt.h) *//* *//* Returns: *//* FLStatus : 0 on success, otherwise failed *//*----------------------------------------------------------------------*//** Values of irFlags for flFormatVolume: */#define NO_FTL_FORMAT 0 /* FAT formatting only */#define FTL_FORMAT 1 /* FAT & FTL formatting */#define FTL_FORMAT_IF_NEEDED 2 /* FAT formatting & FTL formatting if necessary */#define PROGRESS_REPORT /* Format progress is reported via callback */#define flFormatVolume(ioreq) flCall(FL_FORMAT_VOLUME,ioreq)#endif /* FORMAT_VOLUME */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -