📄 dosformt.h
字号:
/******************************************************************************/
/* */
/* Copyright (C), 1995-2006, msystems Ltd. All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or without */
/* modification, are permitted provided that the following conditions are */
/* met: */
/* 1. Redistributions of source code must retain the above copyright notice, */
/* this list of conditions and the following disclaimer. */
/* 2. Redistributions in binary form must reproduce the above copyright */
/* notice, this list of conditions and the following disclaimer in the */
/* documentation and/or other materials provided with the distribution. */
/* 3. Neither the name of msystems nor the names of its contributors may be */
/* used to endorse or promote products derived from this software without */
/* specific prior written permission. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */
/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR */
/* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
/* */
/******************************************************************************/
/*
* $Log: V:/PVCSDB/DiskOnChip/archives/Testing/TrueFFS 6.3/Drop 2.5/3/common/dosformt.h-arc $
*
* Rev 1.10 Sep 11 2006 13:45:18 yaniv.iarovici
* Legal header added
*
* Rev 1.9 Aug 09 2006 16:52:48 Polina.Marimont
* initial for DOC Driver 1.0
*/
#ifndef DOSFORMT_H
#define DOSFORMT_H
#include "flbase.h"
#include "fltl.h"
#define DRIVE_NUMBER 0x80
#define EXTENDED_BOOT_SIGNATURE 0x29
#define BACKUP_OF_BOOT_SECTOR 6
#define FSI_LEADING_SIGNATURE 0x41615252
#define FSI_STRUCTURE_SIGNATURE 0x61417272
#ifndef FL_ROOT_DIR_ENTRIES
#define FL_ROOT_DIR_ENTRIES 512
#endif /* FL_ROOT_DIR_ENTRIES */
/* The BIOS parameter block (a part of the boot sector) */
/* Note that this is NOT the customary definition of the BPB */
/* (customary is to start it on 'bytesPerSector'). To avoid the */
/* nuisance of a structure that starts at an odd offset, we add */
/* the first 11 bytes of the boot sector here. */
#ifndef FL_NO_PACKED_STRUCTS_SUPPORTED
#ifdef FL_WINDOWS_PACKING
#pragma pack(push, 1)
#endif /* FL_WINDOWS_PACKING */
#else /* FL_NO_PACKED_STRUCTS_SUPPORTED */
#endif /* FL_NO_PACKED_STRUCTS_SUPPORTED */
typedef struct
{
FLDword size;
FLByte clusterSize;
}DiskParamsTable;
#ifndef FL_NO_PACKED_STRUCTS_SUPPORTED
typedef FL_PACKED_STRUCTURES_BEFORE struct FL_PACKED_STRUCTURES_AFTER {
BPB bpb;
FLByte physicalDriveNo;
FLSByte reserved0;
FLSByte extendedBootSignature;
FLSByte volumeId[4];
FLSByte volumeLabel[11];
FLSByte systemId[8];
FLSByte bootstrap[448];
LEushort signature;
} DOSBootSector;
typedef FL_PACKED_STRUCTURES_BEFORE struct FL_PACKED_STRUCTURES_AFTER {
BPB bpb;
LEulong FAT32Size;
LEushort extFlags;
LEushort FSVer;
LEulong RootClus;
LEushort FSInfo;
LEushort bckUpBootSect;
FLByte reserved[12];
FLByte physicalDriveNo;
FLSByte reserved0;
FLSByte extendedBootSignature;
FLSByte volumeId[4];
FLSByte volumeLabel[11];
FLSByte systemId[8];
FLSByte bootstrap[420];
LEushort signature;
} FAT32BootSector;
typedef FL_PACKED_STRUCTURES_BEFORE struct FL_PACKED_STRUCTURES_AFTER {
LEulong FSI_LeadSig;
FLByte FSI_Reserved1[480];
LEulong FSI_StructSig;
LEulong FSI_Free_Count;
LEulong FSI_Nxt_Free;
FLByte FSI_Reserved2[14];
LEushort signature;
}FAT32FSInfo;
#else /* FL_NO_PACKED_STRUCTS_SUPPORTED */
#define FL_DOSBOOTSECTOR_BPB_OFFSET 0 /* size 36 */
#define FL_DOSBOOTSECTOR_PHYSICAL_DRIVE_NO_OFFSET 36 /* size 1 */
#define FL_DOSBOOTSECTOR_RESERVED0_OFFSET 37 /* size 1 */
#define FL_DOSBOOTSECTOR_EXTENDED_BOOT_SIGNATURE_OFFSET 38 /* size 1 */
#define FL_DOSBOOTSECTOR_VOLUME_ID_OFFSET 39 /* size 4, array */
#define FL_DOSBOOTSECTOR_VOLUME_LABEL_OFFSET 43 /* size 11, array */
#define FL_DOSBOOTSECTOR_SYSTEM_ID_OFFSET 54 /* size 8, array */
#define FL_DOSBOOTSECTOR_BOOTSTRAP_OFFSET 62 /* size 448, array */
#define FL_DOSBOOTSECTOR_SIGNATURE_OFFSET 510 /* size 2 */
#define FL_DOSBOOTSECTOR_SIZE 512
#define FL_FAT32BOOTSECTOR_BPB_OFFSET 0 /* size 36 */
#define FL_FAT32BOOTSECTOR_FAT32SIZE_OFFSET 36 /* size 4 */
#define FL_FAT32BOOTSECTOR_EXTFLAGS_OFFSET 40 /* size 2 */
#define FL_FAT32BOOTSECTOR_FSVER_OFFSET 42 /* size 2 */
#define FL_FAT32BOOTSECTOR_ROOTCLUSTER_OFFSET 44 /* size 4 */
#define FL_FAT32BOOTSECTOR_FSINFO_OFFSET 48 /* size 2 */
#define FL_FAT32BOOTSECTOR_BCKUPBOOTSECT_OFFSET 50 /* size 2*/
#define FL_FAT32BOOTSECTOR_RESERVED_OFFSET 52 /* size 12, array */
#define FL_FAT32BOOTSECTOR_PHYDRIVENO_OFFSET 64 /* size 1 */
#define FL_FAT32BOOTSECTOR_RESERVED0_OFFSET 65 /* size 1*/
#define FL_FAT32BOOTSECTOR_EXTSIGNATURE_OFFSET 66 /* size 1 */
#define FL_FAT32BOOTSECTOR_VOLUMEID_OFFSET 67 /* size 4, array */
#define FL_FAT32BOOTSECTOR_VOLUMELABEL_OFFSET 71 /* size 11, array */
#define FL_FAT32BOOTSECTOR_SYSTEMID_OFFSET 82 /* size 8 */
#define FL_FAT32BOOTSECTOR_BOOTSTRAP_OFFSET 90 /* size 420, array */
#define FL_FAT32BOOTSECTOR_SIGNATURE_OFFSET 510 /* size 2 */
#define FL_FAT32BOOTSECTOR_SIZE 512
#define FL_FAT32_FSINFO_LEADSIGNATURE_OFFSET 0 /* size 4*/
#define FL_FAT32_FSINFO_RESERVED1_OFFSET 4 /* size 480, array*/
#define FL_FAT32_FSINFO_STRUCTSIGNATURE_OFFSET 484 /* size 4*/
#define FL_FAT32_FSINFO_FREECOUNT_OFFSET 488 /* size 4*/
#define FL_FAT32_FSINFO_NEXTFREE_OFFSET 492 /* size 4*/
#define FL_FAT32_FSINFO_RESERVED2_OFFSET 496 /* size 4*/
#define FL_FAT32_FSINFO_SIGNATURE_OFFSET 510 /* size 14, array*/
#define FL_FAT32_FSINFO_SIZE 512
typedef FLByte DOSBootSector[FL_DOSBOOTSECTOR_SIZE];
typedef FLByte FAT32BootSector[FL_FAT32BOOTSECTOR_SIZE];
typedef FLByte FAT32FSInfo[FL_FAT32_FSINFO_SIZE];
#endif /* FL_NO_PACKED_STRUCTS_SUPPORTED */
#ifndef FL_NO_PACKED_STRUCTS_SUPPORTED
typedef FL_PACKED_STRUCTURES_BEFORE struct FL_PACKED_STRUCTURES_AFTER {
FLByte orderNum; /* 6 significant bits of LFN order number */
Unaligned name1[5]; /* part 1 of scattered name */
FLByte attributes; /* file attributes, must be RO, System, Hidden, Volume */
FLByte reserved; /* must be 0 */
FLByte checksum; /* checksum created from short form name */
LEushort name2[6]; /* part 2 of scattered name */
LEushort startingCluster; /* must be 0 */
LEushort name3[2]; /* part 3 of scattered name */
} LfnDirectoryEntry;
#else /* FL_NO_PACKED_STRUCTS_SUPPORTED */
#define FL_LFN_DIRECTORY_ENTRY_ORDER_NUM_OFFSET 0 /* size 1 */
#define FL_LFN_DIRECTORY_ENTRY_NAME1_OFFSET 1 /* size 10, unaligned array of 2 */
#define FL_LFN_DIRECTORY_ENTRY_ATTRIBUTES_OFFSET 11 /* size 1 */
#define FL_LFN_DIRECTORY_ENTRY_RESERVED_OFFSET 12 /* size 1 */
#define FL_LFN_DIRECTORY_ENTRY_CHECKSUM_OFFSET 13 /* size 1 */
#define FL_LFN_DIRECTORY_ENTRY_NAME2_OFFSET 14 /* size 12, array of 2 */
#define FL_LFN_DIRECTORY_ENTRY_STARTING_CLUSTER_OFFSET 26 /* size 2 */
#define FL_LFN_DIRECTORY_ENTRY_NAME3_OFFSET 28 /* size 4, array of 2 */
#define FL_LFN_DIRECTORY_ENTRY_SIZE 32
typedef FLByte LfnDirectoryEntry[FL_LFN_DIRECTORY_ENTRY_SIZE];
#endif /* FL_NO_PACKED_STRUCTS_SUPPORTED */
/* Directory entry attribute bits */
#ifndef FL_NO_PACKED_STRUCTS_SUPPORTED
typedef FL_PACKED_STRUCTURES_BEFORE struct FL_PACKED_STRUCTURES_AFTER {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -