📄 flstruct.h
字号:
FLSDword bootImageLen; /* Reserved 0 */
FLDword vmAddressingLimit; /* Reserved 0 */
FLWord embeddedCISlength; /* Reserved 0 */
FLByte FAR1 * embeddedCIS; /* Reserved NULL */
} FormatParams3;
/*--------------------------------------------------*/
/* Flags for format routine (non partition related) */
/*--------------------------------------------------*/
#ifdef BDK_ACCESS
#define TL_LEAVE_BINARY_AREA 0x8 /* Is assumed to be a single bit */
#define TL_LEAVE_SOME_BINARY_AREA 0x9 /* Must include TL_LEAVE_BINARY_AREA bits */
#endif /*BDK_ACCESS*/
#define TL_SINGLE_FLOOR 0x10 /* Format only a selection of the floors */
#define TL_DO_NOT_PERFORM_DOWNLOAD 0x20 /* Do not issue a download operation at */
/* end of the format routine. */
#define TL_FAIL_ON_UNMARKED_BB 0x80 /* Fail in case an unmarked bad block is */
/* Found. */
#define TL_LEAVE_SOME_PARTITIONS 0x9
/*--------------------------------------------------*/
/* Formatting parameter structure definition */
/*--------------------------------------------------*/
#define FL_LENGTH_IN_BYTES 0
#define FL_LENGTH_IN_SECTORS 1
#define FL_LENGTH_IN_UNITS 2
#define FL_LENGTH_IN_PERCENTS 3
#define FL_LENGTH_IN_CYLINDERS 10
/*--------------------------------------------------*/
/* Internal Partition flags - N O T F O R U S E */
/*--------------------------------------------------*/
#define TL_SIMPLE_MATCHING 0x10 /* Use simple matching for partition */
#define TL_FORCE_REL 0x20 /* Use RELIABLE mode */
#define TL_FAST_MODE 0x40 /* Use FAST mode */
#define TL_NO_PLANES 0x80 /* Do not match blocks for planes */
/*--------------------------------------------------*/
/* External Disk Partition Flags (TL_NORMAL_FORMAT):*/
/*--------------------------------------------------*/
#define TL_NORMAL_FORMAT 0
#ifdef BDK_ACCESS
/*--------------------------------------------------*/
/* External Binary Partition Flags */
/* (TL_NORMAL_FORMAT / TL_SPL_FORMAT) */
/*--------------------------------------------------*/
#define TL_SPL_FORMAT (TL_SIMPLE_MATCHING | TL_NO_PLANES | TL_FORCE_REL) /* SPL partition */
#endif /*BDK_ACCESS*/
/*--------------------------------------------------*/
/* External spacing factors - only 1 value */
/*--------------------------------------------------*/
#define FL_NORMAL_SPACING 1
/*--------------------------------------------------*/
/* Standard initializer for */
/* BDTLPartitionFormatParams3 structure */
/*--------------------------------------------------*/
#define TL_DEFAULT_PERCENTAGE 0 /* Use default percentage of the media */
#define TL_NO_BOOST 0 /* Do not use any performance boost */
#define TL_BASIC_BOOST 1 /* Use basic 1% performance boost */
#define TL_ENHANCED_PERFORMANCE 100 /* Define as enhanced performance partition */
#define TL_BDTL_STD_SPACE_FACTOR FL_NORMAL_SPACING
#define TL_BDTL_STD_SPARE_UNITS_NO 3
#define STD_BDTL_PARAMS3 {0, /* Total Length */ \
0, /* Fast Length */ \
FL_LENGTH_IN_BYTES, /* Total Length type */ \
FL_LENGTH_IN_PERCENTS, /* Fast Length type */ \
TL_BDTL_STD_SPACE_FACTOR,/* Spaced Factor */ \
TL_BDTL_STD_SPARE_UNITS_NO,/* No of spare units */ \
0,0,0,0, /* Reserved 0 */ \
{0,0,0,0,0,0,0,0},0} /* No H/W protection */
/*--------------------------------------------------*/
/* Standard initializer for */
/* BinaryPartitionFormatParams3 structure */
/*--------------------------------------------------*/
#define TL_BDK_STD_SPARE_BLOCKS_NO 1
#define STD_BINARY_PARAMS3 {0, /* Partition length */ \
FL_LENGTH_IN_BYTES, /* Partition length type */ \
{'B','I','P','O'}, /* Signature */ \
0, /* 0 -normal partition , TL_SPL_FORMAT for SPL Partition */ \
TL_BDK_STD_SPARE_BLOCKS_NO,/* Number of spare blocks */ \
0,0,0,0, /* Reserved 0 */ \
{0,0,0,0,0,0,0,0}, /* Protection key */ \
0} /* Protection type */ \
/*--------------------------------------------------*/
/* Standard initializer for FormatParams3 structure */
/*--------------------------------------------------*/
#define STD_FORMAT_PARAMS3 {TL_DEFAULT_PERCENTAGE, /* Percent used */ \
1, /* No of Disk Partitions */ \
0, /* No of Binary Partitions */ \
NULL, /* Disk partition structure */ \
NULL, /* Binary partition structure */ \
0, /* This cascaded device */ \
0, /* Total cascaded devices */ \
NULL, /* Progress call back */ \
0, 0, /* Reserved 0 */ \
0, 0, 0, NULL} /* Reserved 0 */
#ifdef BDK_ACCESS
/**************************************************************************/
/* Structures and defines for BDK routines: */
/**************************************************************************/
#define BDK_SIGNATURE_NAME 4
typedef struct {
FLByte oldSign[BDK_SIGNATURE_NAME];
FLByte newSign[BDK_SIGNATURE_NAME];
FLByte signOffset;
FLDword startingBlock;
FLDword length;
FLByte flags;
FLByte FAR1 *bdkBuffer;
} BDKStruct;
#define ERASE_BEFORE_WRITE 8
#endif /*BDK_ACCESS*/
/**************************************************************************/
/* Defines for Defrag routines: */
/**************************************************************************/
#define FL_MINIMAL_DEFRAGMENTATION -1
#define FL_MAXIMUM_DEFRAGMENTATION -20
#define FL_STATIC_WEAR_LEVELING_DELAYED -2
#define FL_STATIC_WEAR_LEVELING_NOW -3
#define FL_STATIC_WEAR_LEVELING_ON -4
#define FL_STATIC_WEAR_LEVELING_OFF -5
#ifndef FL_NO_PACKED_STRUCTS_SUPPORTED
typedef struct {
FLByte jumpInstruction[3];
FLSByte OEMname[8];
Unaligned bytesPerSector;
FLByte sectorsPerCluster;
LEushort reservedSectors;
FLByte noOfFATS;
Unaligned rootDirectoryEntries;
Unaligned totalSectorsInVolumeDOS3;
FLByte mediaDescriptor;
LEushort sectorsPerFAT;
LEushort sectorsPerTrack;
LEushort noOfHeads;
LEulong noOfHiddenSectors;
LEulong totalSectorsInVolume;
} BPB;
#else /*FL_NO_PACKED_STRUCTS_SUPPORTED*/
#define FL_BPB_JUMP_INSTRUCTION_OFFSET 0 /* size 3, array */
#define FL_BPB_OEM_NAME_OFFSET 3 /* size 8, array */
#define FL_BPB_BYTES_PER_SECTOR_OFFSET 11 /* size 2, unaligned */
#define FL_BPB_SECTORS_PER_CLUSTER_OFFSET 13 /* size 1 */
#define FL_BPB_RESERVED_SECTORS_OFFSET 14 /* size 2 */
#define FL_BPB_NO_OF_FATS_OFFSET 16 /* size 1 */
#define FL_BPB_ROOT_DIR_ENTRIES_OFFSET 17 /* size 2, unaligned */
#define FL_BPB_TOTAL_SECTORS_IN_VOL_DOS3_OFFSET 19 /* size 2, unaligned */
#define FL_BPB_MEDIA_DESCRIPTOR_OFFSET 21 /* size 1 */
#define FL_BPB_SECTORS_PER_FAT_OFFSET 22 /* size 2 */
#define FL_BPB_SECTORS_PER_TRACK_OFFSET 24 /* size 2 */
#define FL_BPB_NO_OF_HEADS_OFFSET 26 /* size 2 */
#define FL_BPB_NO_OF_HIDDEN_SECTORS_OFFSET 28 /* size 4 */
#define FL_BPB_TOTAL_SECTORS_IN_VOL_OFFSET 32 /* size 4 */
#define FL_BPB_SIZE 36
typedef FLByte BPB[FL_BPB_SIZE];
#endif /*FL_NO_PACKED_STRUCTS_SUPPORTED*/
typedef struct {
FLDword length;
FLWord lengthType;
FLByte pType;
FLByte flags;
}LogicalPartitionParams;
#define STD_LOG_PARTITION_PARAMS {0, /* Partition length */ \
FL_LENGTH_IN_BYTES, /* Bytes, Sectors ... */ \
DOS4_PARTIT, /* Partition type */ \
FL_MARK_PARTITION_BOOTABLE}/* Either bootable or not */ \
typedef struct {
SectorNo bootSectorNo;
SectorNo sectorsInVolume;
SectorNo MBR;
int MBRslot;
} LogPartitionInfo;
#ifndef FL_NO_PACKED_STRUCTS_SUPPORTED
typedef struct {
FLSByte name[11];
FLByte attributes; /* mapped below */
FLByte lowerCaseFlags;
FLByte createTimeMilisec;
LEushort createTimeHourMin;
LEushort createDate;
LEushort lastAccessedDate;
LEushort reserved1;
LEushort updateTime;
/* The date field is encoded as follows: */
/* bit 0-4: Day of month (1-31) */
/* bit 5-8: Month (1-12) */
/* bit 9-15: Year relative to 1980 */
LEushort updateDate;
/* The DOS time field is encoded as follows: */
/* bit 0-4: seconds divided by 2 (0-29) */
/* bit 5-10: minutes (0-59) */
/* bit 11-15: hours (0-23) */
LEushort startingCluster;
LEulong fileSize;
} DirectoryEntry;
#else /*FL_NO_PACKED_STRUCTS_SUPPORTED*/
#define FL_DIRECTORY_ENTRY_NAME_OFFSET 0 /* size 11, array */
#define FL_DIRECTORY_ENTRY_ATTRIBUTES_OFFSET 11 /* size 1 */
#define FL_DIRECTORY_ENTRY_LOWERCASE_FLAGS_OFFSET 12 /* size 1 */
#define FL_DIRECTORY_ENTRY_CREATE_TIME_MILLISEC_OFFSET 13 /* size 1 */
#define FL_DIRECTORY_ENTRY_CREATE_TIME_HOURMIN_OFFSET 14 /* size 2 */
#define FL_DIRECTORY_ENTRY_CREATE_DATE_OFFSET 16 /* size 2 */
#define FL_DIRECTORY_ENTRY_LAST_ACCESS_DATE_OFFSET 18 /* size 2 */
#define FL_DIRECTORY_ENTRY_RESERVED1_OFFSET 20 /* size 2 */
#define FL_DIRECTORY_ENTRY_UPDATE_TIME_OFFSET 22 /* size 2 */
#define FL_DIRECTORY_ENTRY_UPDATE_DATE_OFFSET 24 /* size 2 */
#define FL_DIRECTORY_ENTRY_STARTING_CLUSTER_OFFSET 26 /* size 2 */
#define FL_DIRECTORY_ENTRY_FILESIZE_OFFSET 28 /* size 4 */
#define FL_DIRECTORY_ENTRY_SIZE 32
typedef FLByte DirectoryEntry[FL_DIRECTORY_ENTRY_SIZE];
#endif /*FL_NO_PACKED_STRUCTS_SUPPORTED*/
/* FAT Format Parameters record - given to flFormatFS */
typedef struct {
FLWord noOfRootEntries;
FLWord noOfSectorsPerCluster;
FLByte noOfFATs;
FLByte pType;
FLByte reserved1;
FLByte flags;
FLByte volumeId[4]; /* FAT partition identification number */
FLByte* volumeLabel; /* FAT partition label string. If NULL, no label */
} FATFormatParams;
#define FAT12_PARTIT 0x01
#define FAT16_PARTIT 0x04
#define EX_PARTIT 0x05
#define DOS4_PARTIT 0x06
#define FAT32_PARTIT 0x0b
#define FL_TFAT_MODE 0x1
#define FS_USE_DEFAULT_CLUSTER_SIZE 0
#define STD_FAT_FORMAT_PARAMS {512, /* No of entries in the rood directory */ \
FS_USE_DEFAULT_CLUSTER_SIZE, /* No of sectors per cluster */ \
1, /* No of FAT copies */ \
0, /* Partition type */ \
0, 0, /* Reseved 0 */ \
{0, 0, 0, 0}, /* FAT Volume ID */ \
NULL} /* FAT Lable */
#endif /* FLSTRUCT_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -