📄 _dosfrmt.h
字号:
/***********************************************************************************/
/* M-Systems Confidential */
/* Copyright (C) M-Systems Flash Disk Pioneers Ltd. 1995-2003 */
/* All Rights Reserved */
/***********************************************************************************/
/* NOTICE OF M-SYSTEMS OEM */
/* SOFTWARE LICENSE AGREEMENT */
/* */
/* THE USE OF THIS SOFTWARE IS GOVERNED BY A SEPARATE LICENSE */
/* AGREEMENT BETWEEN THE OEM AND M-SYSTEMS. REFER TO THAT AGREEMENT */
/* FOR THE SPECIFIC TERMS AND CONDITIONS OF USE, */
/* OR CONTACT M-SYSTEMS FOR LICENSE ASSISTANCE: */
/* E-MAIL = info@m-sys.com */
/***********************************************************************************/
/*
* $Log: V:/PVCSDB/DiskOnChip/archives/general storage/TrueFFS/src/include/_dosfrmt.h-arc $
*
* Rev 1.3 Jan 14 2004 22:29:26 oris
* Added reserved field to FLPathSegment record.
*
* Rev 1.2 Oct 20 2003 09:01:04 oris
* Added new definition defaults :
* PATH_CHARACTERS_MAX_NUM - maximum path segment
* FL_MAX_TREE_LEVELS - maximum sub directory depth
*
* Rev 1.1 Sep 30 2003 17:55:30 oris
* Added SureFS long file names definitions
* Removed flDosFormat prototype
*
* Rev 1.0 Apr 09 2003 12:16:02 OriS
* Initial revision.
*
*/
#ifndef _DOSFRMT_H
#define _DOSFRMT_H
#ifndef LFN_NAME_MAX_CHARACTERS
#define LFN_NAME_MAX_CHARACTERS 255
#endif /* LFN_NAME_MAX_CHARACTERS */
#ifndef PATH_SEGMENTS_MAX_NUM
#define PATH_SEGMENTS_MAX_NUM 10
#endif /* PATH_SEGMENTS_MAX_NUM */
#ifndef PATH_CHARACTERS_MAX_NUM
#define PATH_CHARACTERS_MAX_NUM LFN_NAME_MAX_CHARACTERS
#endif /* PATH_CHARACTERS_MAX_NUM */
#ifndef FL_MAX_TREE_LEVELS
#define FL_MAX_TREE_LEVELS ( PATH_CHARACTERS_MAX_NUM / 2 + 1 )
#endif /* FL_MAX_TREE_LEVELS */
#define UNICODE_CHAR_PER_LFN_ENTRY 13
#define SHORT_NAME_MAX_LENGTH 8
#define EXTENSION_MAX_LENGTH 3
#define NAME_8_3_MAX_LENGTH 12 /* "tttttttt.xxx" */
/* Directory entry attribute bits for internal use */
#define ATTR_SUREFS_GEN_ATTENTION_FLAG 0x40
#define ATTR_SUREFS_REN_ATTENTION_FLAG 0x80
#define ATTR_SUREFS_ATTENTION_FLAG_MASK (ATTR_SUREFS_GEN_ATTENTION_FLAG | \
ATTR_SUREFS_REN_ATTENTION_FLAG)
#define ATTR_MASK ((unsigned char)(FL_ATTR_READ_ONLY | FL_ATTR_HIDDEN | FL_ATTR_SYSTEM | \
FL_ATTR_VOL_LABEL | FL_ATTR_DIRECTORY | FL_ATTR_ARCHIVE))
#define LFN_ATTRIBUTES ((unsigned char)(FL_ATTR_READ_ONLY | FL_ATTR_HIDDEN | \
FL_ATTR_SYSTEM | FL_ATTR_VOL_LABEL))
#define DIRECTORY_ENTRY_SIZE sizeof(DirectoryEntry)
#define DIRECTORY_ENTRIES_PER_SECTOR (FL_SECTOR_SIZE / DIRECTORY_ENTRY_SIZE)
#define SET_GLOBAL_ATTENTION_FLAG 0
#define RESET_GLOBAL_ATTENTION_FLAG 0xffff
#define GLOBAL_ATT_FLAG_FAT_ENTRY 1
#define NEVER_USED_DIR_ENTRY 0
#define DELETED_DIR_ENTRY ((FLSByte) 0xe5)
/* FAT definitions */
#define FAT_FREE 0
#define FAT_BAD_CLUSTER 0xfff7
#define FAT_LAST_CLUSTER 0xffff /* actually any of 0xfff8-0xffff */
/* Partition table definitions */
#define PARTITION_SIGNATURE 0xaa55
#define CYLINDER_SECTOR(cylinder,sector) ((sector) + ((cylinder & 0xff) << 8) + ((cylinder & 0x300) >> 2))
#define FAT12_PARTIT 0x01
#define FAT16_PARTIT 0x04
#define EX_PARTIT 0x05
#define DOS4_PARTIT 0x06
#define MAX_PARTITION_DEPTH 8
typedef enum {
LFN_LONG_NAME, /* for long file name */
LFN_SHORT_NAME, /* for 8.3 short file name */
LFN_UPPERCASE_FOR_SHORT, /* length and characters set but not case match LFN */
LFN_INVALID_SET /* found invalid file name characters */
} LfnStatus;
/*-------------------------------------------------------------------------------------------
* F L P a t h S e g m e n t
* The structure is used when analyzing path string.
* Parameters: name - address of first character of the path segment (unicode null terminated
* string. For example, for first segment of /first/second/third.ext it
* will point on "first".
* length - number of characters of the path segment
* buffSize - in case of retrieving file name this field contains size of supplied buffer
* in characters.
* get - if TRUE, this structure is used to retrieve found file name
* (getFirstFileName()). If FALSE, this structure contains file name to
* be opened/created/found (findFileName()).
*------------------------------------------------------------------------------------------*/
typedef struct {
FLWchar FAR1 *name;
short length;
short buffSize;
FLBoolean get;
FLBoolean reserved;
} FLPathSegment;
/*--------------------------------------------------------------------------
* F L L f n S e a r c h
* The FLLfnSearch structer is used when searching directory by specified
* file name.
* Parameters:
* neverUsed - indicates that found at least one directory entry in sector
* that was never used.
* verifiedChars - Number of characters that successfully compared with
* file name or found in free entries in previous sector
* checksum - LFN checksum found in previous sector
* lastNum - LFN order number of last LFN entry found in previous sector
* idx - directory entry index of found entry
* status - LFN_SHORT_NAME, LFN_LONG_NAME, LFN_UPPERCASE_FOR_SHORT,
* LFN_INVALID_SET
*---------------------------------------------------------------------------*/
typedef struct {
FLBoolean neverUsed;
unsigned long verifiedChars;
unsigned char checksum;
unsigned long lastNum;
unsigned long idx;
LfnStatus status;
} FLLfnSearch;
#endif /* _DOSFRMT_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -