⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dosformt.h

📁 电子盘DEMO板程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************/
/*                                                                            */
/*  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 + -