📄 dosformt.h
字号:
/****************************************************************************** * * * Project: DOC Driver for Linux 2.4 Block device driver for mDOC H3 family * * of devices under Linux kernel 2.4. * * * * Version: 1.0 * * Email questions to: oemsupport@sandisk.com * * Copyright (C) SanDisk IL Ltd. 1995 - 2007 * * SanDisk IL Ltd., 7 Atir Yeda Street, Kfar Saba 44425, Israel * * * ****************************************************************************** * * * This program 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 of the License, or any later version.* * This program 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, which is set forth in the readme.txt file. * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., 51 * * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * * * This License does not grant you any right to use the trademarks, service * * marks or logos of SanDisk IL Ltd. or SanDisk Corporation. * * Subject to the foregoing, SanDisk IL Ltd., for itself and on behalf of its * * licensors, hereby reserves all intellectual property rights in the program,* * except for the rights expressly granted in this License. * * * ******************************************************************************//*
* $Log: V:/PVCSDB/DiskOnChip/archives/Testing/TrueFFS 6.3/Drop 2.5/3/common/dosformt.h-arc $
*
* Rev 1.10.1.0 Nov 12 2006 09:47:10 Yaniv.Iarovici
* Added FAT 32 support.
*
* 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 {
/* First partition entry starts here. We do not map it as a */
/* separate structure because it is not longword aligned */
FLByte activeFlag; /* 80h = bootable */
FLByte startingHead;
LEushort startingCylinderSector;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -