fatfs相关宏定义说明

news2024/10/6 8:37:48

fat16文件系统DBR
在这里插入图片描述
宏定义如下:

#define BS_JmpBoot			0		//跳转指令。3字节。/* x86 jump instruction (3-byte) */
#define BS_OEMName			3		//OEM名称。8字节。/* OEM name (8-byte) */
#define BPB_BytsPerSec		11		//扇区字节数。2字节。/* Sector size [byte] (WORD) */
#define BPB_SecPerClus		13		//每蔟扇区数。1字节。/* Cluster size [sector] (BYTE) */
#define BPB_RsvdSecCnt		14		//保留扇区数。2字节。/* Size of reserved area [sector] (WORD) */
#define BPB_NumFATs			16		//FAT表个数。1字节。/* Number of FATs (BYTE) */
#define BPB_RootEntCnt		17		//FAT32必须为0,FAT12/16为fat表中根目录区域大小。2字节。/* Size of root directory area for FAT [entry] (WORD) */
#define BPB_TotSec16		19		//FAT32必须为0,FAT12/16为卷大小。2字节。/* Volume size (16-bit) [sector] (WORD) */
#define BPB_Media			21		//介质描述符。1字节。/* Media descriptor byte (BYTE) */
#define BPB_FATSz16			22		//FAT32必须为0,FAT12/16为fat表占用的扇区数。2字节。/* FAT size (16-bit) [sector] (WORD) */
#define BPB_SecPerTrk		24		//每磁道扇区数。2字节。/* Number of sectors per track for int13h [sector] (WORD) */
#define BPB_NumHeads		26		//磁头数。2字节。/* Number of heads for int13h (WORD) */
#define BPB_HiddSec			28	//隐藏扇区数,卷在磁盘中的偏移量,用扇区个数表示。/* Volume offset from top of the drive (DWORD) */
#define BPB_TotSec32		32		//总扇区数,单位为扇区。/* Volume size (32-bit) [sector] (DWORD) */
#define BS_DrvNum			36		//BIOS驱动器号/* Physical drive number for int13h (BYTE) */
#define BS_NTres			37		//win nt错误标志。/* WindowsNT error flag (BYTE) */
#define BS_BootSig			38		//扩展引导标志。/* Extended boot signature (BYTE) */
#define BS_VolID			39		//卷序列号。/* Volume serial number (DWORD) */
#define BS_VolLab			43		//卷标。/* Volume label string (8-byte) */
#define BS_FilSysType		54		//文件系统类型字符串。/* Filesystem type string (8-byte) */
#define BS_BootCode			62		//启动代码。448字节。/* Boot code (448-byte) */
#define BS_55AA				510		//签名。/* Signature word (WORD) */

fat32文件系统DBR
在这里插入图片描述
0~35中使用到的字段与fat16一致。

#define BPB_FATSz32			36		//每FAT扇区数。/* FAT32: FAT size [sector] (DWORD) */
#define BPB_ExtFlags32		40		//标记。/* FAT32: Extended flags (WORD) */
#define BPB_FSVer32			42		//版本。/* FAT32: Filesystem version (WORD) */
#define BPB_RootClus32		44		//根目录首蔟号。/* FAT32: Root directory cluster (DWORD) */
#define BPB_FSInfo32		48		//文件系统信息扇区号。/* FAT32: Offset of FSINFO sector (WORD) */
#define BPB_BkBootSec32		50		//DBR备份扇区号。/* FAT32: Offset of backup boot sector (WORD) */
#define BS_DrvNum32			64		//BIOS驱动器号。/* FAT32: Physical drive number for int13h (BYTE) */
#define BS_NTres32			65		//错误标记。/* FAT32: Error flag (BYTE) */
#define BS_BootSig32		66		//扩展引导标志。/* FAT32: Extended boot signature (BYTE) */
#define BS_VolID32			67		//卷序列号。/* FAT32: Volume serial number (DWORD) */
#define BS_VolLab32			71		//卷标。/* FAT32: Volume label string (8-byte) */
#define BS_FilSysType32		82		//文件系统类型字符串。/* FAT32: Filesystem type string (8-byte) */
#define BS_BootCode32		90		//启动代码,420字节。/* FAT32: Boot code (420-byte) */

exfat文件系统DBR
在这里插入图片描述

#define BPB_ZeroedEx		11		//保留,必须为0。/* exFAT: MBZ field (53-byte) */
#define BPB_VolOfsEx		64		//分区的起始扇区号(隐藏扇区数)。/* exFAT: Volume offset from top of the drive [sector] (QWORD) */
#define BPB_TotSecEx		72		//分区总扇区数。/* exFAT: Volume size [sector] (QWORD) */
#define BPB_FatOfsEx		80		//FAT表起始扇区号(从DBR到FAT表的扇区个数)。/* exFAT: FAT offset from top of the volume [sector] (DWORD) */
#define BPB_FatSzEx			84		//FAT表扇区数。/* exFAT: FAT size [sector] (DWORD) */
#define BPB_DataOfsEx		88		//首蔟起始扇区号(数据区)。/* exFAT: Data offset from top of the volume [sector] (DWORD) */
#define BPB_NumClusEx		92		//总蔟数。/* exFAT: Number of clusters (DWORD) */
#define BPB_RootClusEx		96		//根目录首蔟。/* exFAT: Root directory start cluster (DWORD) */
#define BPB_VolIDEx			100		//卷序列号。/* exFAT: Volume serial number (DWORD) */
#define BPB_FSVerEx			104		//文件系统版本。/* exFAT: Filesystem version (WORD) */
#define BPB_VolFlagEx		106		//卷标志。/* exFAT: Volume flags (WORD) */
#define BPB_BytsPerSecEx	108		//每扇区字节数描述,2的幂。/* exFAT: Log2 of sector size in unit of byte (BYTE) */
#define BPB_SecPerClusEx	109		//每蔟扇区数描述,2的幂。/* exFAT: Log2 of cluster size in unit of sector (BYTE) */
#define BPB_NumFATsEx		110		//fat表个数。/* exFAT: Number of FATs (BYTE) */
#define BPB_DrvNumEx		111		//驱动标记。/* exFAT: Physical drive number for int13h (BYTE) */
#define BPB_PercInUseEx		112		//使用百分比。/* exFAT: Percent in use (BYTE) */
#define BPB_RsvdEx			113		//保留。/* exFAT: Reserved (7-byte) */
#define BS_BootCodeEx		120		//启动代码。/* exFAT: Boot code (390-byte) */

fat16和fat32文件系统中短文件名条目
在这里插入图片描述

#define DIR_Name			0		//短文件名,11字节。/* Short file name (11-byte) */
#define DIR_Attr			11		//属性。/* Attribute (BYTE) */
#define DIR_NTres			12		//小写字母标记。/* Lower case flag (BYTE) */
#define DIR_CrtTime10		13		//创建时间,单位10ms。/* Created time sub-second (BYTE) */
#define DIR_CrtTime			14		//创建时间。/* Created time (DWORD) */
#define DIR_LstAccDate		18		//最后访问日期。/* Last accessed date (WORD) */
#define DIR_FstClusHI		20		//高16bit首蔟。/* Higher 16-bit of first cluster (WORD) */
#define DIR_ModTime			22		//修改时间。/* Modified time (DWORD) */
#define DIR_FstClusLO		26		//低16bit首蔟。/* Lower 16-bit of first cluster (WORD) */
#define DIR_FileSize		28		//文件大小。/* File size (DWORD) */

fat16和fat32文件系统中长文件名:
在这里插入图片描述
注意:长文件名文件目录条目存储:短文件名条目+多个长文件名条目。

#define LDIR_Ord			0		//长文件名序号和标志/* LFN: LFN order and LLE flag (BYTE) */
#define LDIR_Attr			11		//长文件名属性。/* LFN: LFN attribute (BYTE) */
#define LDIR_Type			12		//长文件名条目类型。/* LFN: Entry type (BYTE) */
#define LDIR_Chksum			13		//短文件名校验和。/* LFN: Checksum of the SFN (BYTE) */
#define LDIR_FstClusLO		26		//长文件名条目中,该字段必须为0。/* LFN: MBZ field (WORD) */

exfat文件系统卷目录条:
在这里插入图片描述

//所有exfat目录条第一个字节
#define XDIR_Type			0		//exfat目录类型。/* exFAT: Type of exFAT directory entry (BYTE) */

//卷目录条
#define XDIR_NumLabel		1		//exfat卷标字符数。/* exFAT: Number of volume label characters (BYTE) */
#define XDIR_Label			2		//exfat卷标。/* exFAT: Volume label (11-WORD) */

exfat文件系统蔟位图目录条:
在这里插入图片描述

exfat文件系统大写字符文件目录条:
在这里插入图片描述


//大写转换表目录条
#define XDIR_CaseSum		4		//exfat大写转换表校验和/* exFAT: Sum of case conversion table (DWORD) */
#define XDIR_NumSec			1		//exfat附属目录项数。/* exFAT: Number of secondary entries (BYTE) */

exfat32用户文件目录条:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

//文件目录条
#define XDIR_SetSum			2		//exfat检验和。/* exFAT: Sum of the set of directory entries (WORD) */
#define XDIR_Attr			4		//exfat文件属性。/* exFAT: File attribute (WORD) */
#define XDIR_CrtTime		8		//exfat文件创建时间。/* exFAT: Created time (DWORD) */
#define XDIR_ModTime		12		//exfat文件修改时间。/* exFAT: Modified time (DWORD) */
#define XDIR_AccTime		16		//exfat文件最后访问时间。/* exFAT: Last accessed time (DWORD) */
#define XDIR_CrtTime10		20		//exfat文件创建时间,精确至10ms。/* exFAT: Created time subsecond (BYTE) */
#define XDIR_ModTime10		21		//exfat文件最后修改时间,精确至10ms。/* exFAT: Modified time subsecond (BYTE) */
#define XDIR_CrtTZ			22		//exfat创建时间时区差,间隔15分钟。/* exFAT: Created timezone (BYTE) */
#define XDIR_ModTZ			23		//exfat最后修改时间时区差,间隔15分钟。/* exFAT: Modified timezone (BYTE) */
#define XDIR_AccTZ			24		//exfat最后访问时间时区差,间隔15分钟。/* exFAT: Last accessed timezone (BYTE) */
#define XDIR_GenFlags		33		//exfat第二个条目标志。/* exFAT: General secondary flags (BYTE) */
#define XDIR_NumName		35		//exfat文件名字符数。/* exFAT: Number of file name characters (BYTE) */
#define XDIR_NameHash		36		//exfat文件名hash值。/* exFAT: Hash of file name (WORD) */
#define XDIR_ValidFileSize	40		//exfat文件大小。/* exFAT: Valid file size (QWORD) */
#define XDIR_FstClus		52		//exfat文件首蔟。/* exFAT: First cluster of the file data (DWORD) */
#define XDIR_FileSize		56		//exfat文件大小。/* exFAT: File/Directory size (QWORD) */

MBR结构:
在这里插入图片描述
PTE结构说明
在这里插入图片描述

#define MBR_Table			446		//MBR中主引导程序代码,占用446字节,也是DPT的偏移量。/* MBR: Offset of partition table in the MBR */
#define SZ_PTE				16		//MBR中分区条目大小,一个分区使用16字节来表示。/* MBR: Size of a partition table entry */
#define PTE_Boot			0		//引导标志,0x00表示非活动分区,0x80为活动分区,一个磁盘只能有一个活动分区。/* MBR PTE: Boot indicator */
#define PTE_StHead			1		//分区的起始磁头号。/* MBR PTE: Start head */
#define PTE_StSec			2		//分区的起始扇区号(每个磁道分成多个扇区,并对扇区进行了编号)。/* MBR。 PTE: Start sector */
#define PTE_StCyl			3		//分区的起始柱面(磁道号)。/* MBR PTE: Start cylinder */
#define PTE_System			4		//分区类型/* MBR PTE: System ID */
#define PTE_EdHead			5		//分区的结束磁头号。/* MBR PTE: End head */
#define PTE_EdSec			6		//分区的结束扇区号。/* MBR PTE: End sector */
#define PTE_EdCyl			7		//分区的结束柱面(磁道号)。/* MBR PTE: End cylinder */
#define PTE_StLba			8		//起始扇区数,从磁盘最开始到当前分区的扇区个数。/* MBR PTE: Start in LBA */
#define PTE_SizLba			12		//当前分区占用的扇区个数。/* MBR PTE: Size in LBA */

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/81012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python学习基础笔记四十五——包

C:\Program Files\Python310\Lib 1、 包的概念:把解决同一类问题的模块放在同一个文件夹里,我们就称为包。 2、在PyCharm中创建一个包: 文件夹中会有一个init.py文件。 在Python3中没有这个__init__.py文件也没有问题。 3、在包A和包B下有同…

Go设计与实现 -- map哈希表

Go语言中的哈希表有它自己的一套实现方式。和Java的哈希表还是有些不同的,但是为了保证知识体系的完整性,我还是准备从头开始说起。 哈希表设计原理 哈希表的读写时间复杂度是O(1),因为它提供了键值之间的映射。要实现一个性能优异的哈希表…

spring——AOP面向切面编程——基于XML的AspectJ AOP开发(转载)

我们可以在 Spring 项目中通过 XML 配置,对切面(Aspect 或 Advisor)、切点(PointCut)以及通知(Advice)进行定义和管理,以实现基于 AspectJ 的 AOP 开发。Spring 提供了基于 XML 的 AOP 支持,并提供了一个名为“aop”的命名空间,该…

Docker笔记--使用Docker部署MySQL

1--Docker部署MySQL ① 搜索MySQL镜像 docker search mysql ② 拉取MySQL镜像 docker pull mysql:latest ③ 创建MySQL容器 首先在宿主机创建MySQL的映射目录,即数据卷: cd /home mkdir mysql cd mysql 之后在当前目录创建MySQL容器($PW…

【事故复盘】吐血整理一场线上事故——CPU飙升200%

🔍 经验使你在第二次犯相同错误时及时发现。 —— 琼斯 🔖 事故时间:12.7日 17:43 ~ 21:03 🔖 事故影响:服务接口查询慢,用户查看数据转圈 🔖 事故过程: 那是一个宛如平静的下午&…

128-150-mysql-高级篇-索引及调优篇

115-mysql-高级篇-索引及调优篇: 索引及调优篇 1、索引的创建与设计原则 1. 索引的声明与使用 1.1 索引的分类 从功能逻辑上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。按照物理实现方式,索引可以分…

BUUCTF Web1

[极客大挑战 2019]EasySQL 试了个万能密码就能上去了 flag: flag{8e685472-02e4-440a-b04e-b0d9b6d9c27f} [HCTF 2018]WarmUp 看源码有个source.php <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source&qu…

Mysql 创建存储过程和函数及各种例子

Mysql 创建存储过程和函数及各种例子1. Mysql 创建存储过程1.1 前言知识1.1.1 语法结构1.1.2 简单解释1.2 创建存储过程入门例子1.2.1 无参存储过程1.2.1.1 不带变量1.2.1.2 带变量1.2.2 有入参的存储过程1.2.3 有出参的存储过程1.2.4 有入参和存储的存储过程1.2.5 inout的存储…

如何将镜像上传至阿里云?如何从阿里云中拉取自己的镜像?

目录 如何将制作好的镜像上传至阿里云&#xff1f; 一、前期准备 1、注册阿里云账户 2、登录账号 3、配置Docker加速器 4、创建镜像仓库的命名空间&#xff08;私有的&#xff09; 5.创建镜像仓库(创建镜像仓库时要绑定一个代码托管网站&#xff0c;例如&#xff1a;githu…

Zookeeper集群搭建

文章目录前言Zookeeper集群搭建&#xff08;一&#xff09;LeaderFollower模式&#xff08;二&#xff09;下载zookeeeper的压缩包&#xff08;三&#xff09;解压&#xff08;四&#xff09;修改配置文件&#xff08;五&#xff09;添加myid配置&#xff08;六&#xff09;安装…

痞子衡嵌入式:存储器大厂Micron的NOR Flash芯片特殊丝印设计(FBGA代码)

大家好&#xff0c;我是痞子衡&#xff0c;是正经搞技术的痞子。今天痞子衡给大家讲的是存储器大厂Micron的NOR Flash芯片特殊丝印设计(FBGA代码)。 痞子衡之前写过一篇文章 《J-Flash在Micron Flash固定区域下载校验失败的故事》&#xff0c;这篇文章里提及了 Micron 家的串行…

明峰医疗IPO终止:亏损超过14亿元,王瑶法、潘华素夫妇为实控人

近日&#xff0c;上海证券交易所科创板披露的信息显示&#xff0c;明峰医疗系统股份有限公司&#xff08;下称“明峰医疗”&#xff09;向上海证券交易所提交了撤回上市申请文件的申请&#xff0c;保荐人海通证券提交了撤回保荐的申请。 因此&#xff0c;上海证券交易所决定终…

设计模式之创建型模式---单例模式

文章目录1.介绍2.应用场景3.实现3.1 结构3.2 类图3.3 代码示例3.3.1 饿汉式3.3.2 懒汉式3.3.3 双重检验锁3.3.3 静态内部类实现单例3.3.4 枚举类实现单例总结1.介绍 单例模式(singleton) 是指某个类中能生成一个实例&#xff0c;该类提供了一个全局访问点&#xff0c;提供一个唯…

JUC并发编程与源码分析笔记07-volatile与JMM

被volatile修饰的变量有两大特点 可见性、有序性&#xff0c;但是不保证原子性。 当写一个volatile变量时&#xff0c;JMM会把该线程对应的本地内存中的共享变量值立即刷新回主内存中。当读一个volatile变量时&#xff0c;JMM会把该线程对应的本地内存设置为无效&#xff0c;重…

Java开发:汇编语言

一、为什么学习汇编语言 中国人和中国人沟通需要学习汉语 中国人和美国人沟通在会汉语的基础上还要学习英语 那么&#xff0c;人和机器沟通的话需要学习哪些语言呢&#xff1f; 答案是&#xff1a;人类的语言机器语言 但是&#xff0c;机器语言都是由0和1组成&#xff0c;人类…

opencv图像直方图

灰度直方图&#xff1a;从数学上来说&#xff0c;图像直方图是描述图像的各个灰度级的统计特性&#xff0c;它是图像灰度值的函数&#xff0c;统计图像中各个灰度级出现的次数或频率。从图像上来说&#xff0c;灰度直方图是一个二维图像&#xff0c;横坐标为图像中各个像素点的…

git stash命令用法详解(临时存储代码)

1、需求背景 有时候在开发过程中&#xff0c;在一个分支上&#xff08;dev1&#xff09;已经写了一部分代码&#xff0c;但是需要紧急切换到别的分支(dev2)上修改某个代码&#xff0c;这时候不能直接从dev1分支上切换到dev2分支上&#xff0c;提示你需要保存代码。此时dev1分支…

Linux内存模型

sparse内存模型前言1.SPARSEMEM原理:2.vmemmap在虚拟地址空间位置3.virt&#xff0c;phys&#xff0c;page&#xff0c;pfn之间的转换关系3.1内核态虚拟地址和物理内存地址转换关系3.2页帧pfn、物理内存的page指针的关系3.3其他快捷的转换总结前言 Linux中的物理内存被按页框划…

408 考研《操作系统》第二章第五节:信号量机制和用信号量机制实现进程互斥、同步、前驱关系

文章目录教程1. 信号量机制1.1 概念1.2 信号量机制——整型信号量1.3 信号量机制——记录型信号量&#xff08;important&#xff09;1.4 总结2. 用信号量机制实现进程互斥、同步、前驱关系2.1 信号量机制实现进程互斥&#xff08;important&#xff09;2.2 信号量机制实现进程…

java基于SpringBoot的在线答疑系统的研究与实现-计算机毕业设计

项目介绍 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大师生的喜爱&#xff0c;也逐渐进入了每个学生的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符合…