关于文件在FAT32磁盘扇区中的绝对定位 首先我们应该了解FAT32的基本结构(树形结构) 我们首先要明白
FAT32文件系统DBR(引导扇区),FAT,FDT,DATA这四个基本结构:
1.DBR:DBR记录了当前FAT32 磁盘的一些基本信息,在通常情况下,DBR位于磁盘分区的0号逻辑扇区 在附件中有幅
DBR的图形信息,里面详细说明了在DBR中我们能获取到哪些主要信息,当然,还有很多信息希望读者自己去查阅详
相关资料,我们首先需要获取到DBR中的一些详细信息才能进一步定位文件。
2 FDT:FDT区简单的说就是记录的目录(文件夹)的信息,里面记录了当前目录下所有的文件(包括当前目录下的文件
夹名)的信息,说通俗一点就是记录了当前目录下的所有文件的文件名,我们定位文件,必须要定位到该文件所在目
录的FDT区的位置。
3 FAT:FAT区在FAT32文件系统中有2个:FAT1与FAT2,FAT2是FAT1的备份,所以我们只需要获取FAT1的位置,FAT区
所在的扇区号我们可以由DBR获取,那FAT区究竟是什么呢?首先,我们知道磁盘是由扇区组成的,若干的扇区组成一
簇,当一个目录的FDT区需要占据多个簇的时候,FAT区记录了多个簇的连接信息,具体可以详细去查阅有关资料。
4 DATA:DATA区是由FDT区定位的,上面说过FDT区记录了某个目录下文件的信息,若这个信息记录的是文件而非文件
夹(目录),则这个信息的一部分记录了这个文件的DATA区的位置,顾名思义,DATA区储存了文件的内容,当一个
簇无法记录一个完整的文件内容时,就要用到FAT区进行簇连。
下面我将详细介绍如何用C/C++实现指定文件在FAT32文件系统中的绝对定位:
定位文件所在的DATA区,必须读取扇区。C/C++中 我们使用windows.h提供的CreateFile,CreateFile2个函数实现
读取扇区,函数的使用方法请查阅详相关资料。
下面我们举个例子 假设我要定位 C:\a\b\c.txt 这个文件
1.读取0号扇区DBR,获取详关信息,具体我们需要得到:1根目录FDT区的首簇号 2每簇所拥有的扇区数 3FAT区的首扇区号
4保留扇区号 5FAT区的长度 6FAT区数
2.我们获取了根目录FDT区的首簇号,根据公式:首扇区号=保留扇区+FAT区数*AT区的长度+(当前簇号-2)*每簇所拥
有的扇区数 这个公式 计算出首扇区 根据上面FDT区的介绍 我们知道根目录的FDT区一定记录了a这个目录的信息,那
我们逐个扇区读取并扫描(注意簇连)获得了b这个目录的目录信息,然后分析信息,得到b这个目录的FDT区。
3.同上,在b的FDT区中,我们获取了c.txt这个文件的信息,并由获取的信息得到了这个文件DATA区的扇区号,从而定位
成功。
FAT32文件系统就是一个树型结构 在定位文件中我们要注意:1.簇连问题
2.长文件名可能记录在2个扇区中,定位起来有点难度
3.中文编码问题
如何读者有什么疑问,请给我留言,一定回答。
- 大小: 32.5 KB
分享到:
相关推荐
* 这是修改过后的fis.c模糊推理系统库函数,可以移植C/C++环境使用,在VS2010的MFC环境经过测试 * 1、将fis.c文件拷贝到项目中; * 2、修改VS2010的配置属性,项目->属性->C/C++->预处理器->预处理器定义,添加 ...
由于该技术需要直接读写对内存中的机器码,所以多采用汇编语言实现,这使得很多想在自己的程序中使用SMC技术进行软件加密的C/C++程序员望而却步。针对这种现状,本文提出了几种基于C/C++语言的机器指令定位方法,...
基于C/C++模拟处理机调度、存储管理(动态分区分配、分页存储地址转换)和文件系统 基于C/C++模拟处理机调度、存储管理(动态分区分配、分页存储地址转换)和文件系统 基于C/C++模拟处理机调度、存储管理...
C/C++实现linux和Windows查看系统、进程、服务的内存和CPU使用情况的源代码,生成的是静态链接库,Windows和Linux下经测试都可用,查看系统、指定名称的服务、指定名称的进程占用CPU和内存,查看方式不是通过程序中...
在IT领域,尤其是在系统编程和低级磁盘操作中,理解如何使用VC++对FAT32文件系统进行读写是非常关键的技能。FAT32是Microsoft开发的一种文件分配表(File Allocation Table)格式,广泛应用于各种存储设备,如硬盘、...
1. 熟悉 C/C++ 的人员 2. 正在做关于 Qt 可视化却无从下手的人员 3. 希望做一个小项目,但没有合适的框架的人员 我主要能学到什么: 1. 该项目包含 鼠标点击响应与绘图相关的算法 2. 该项目包含 创建、删除、编辑 ...
在学C的时候碰到了麻烦,TurboC的.h文件好多VC没有,就上网找了一个这个工具。用这个来学习C参加二级考试挺实用的,是共享版,35块,比考试报名费便宜多了,不贵。机器码注册。官方介绍:原名《Turbo C/C++ for ...
通过这个项目,你可以学习到如何在C/C++环境中实现RSA算法,以及如何将它应用于文件的加解密操作。这对于理解非对称加密原理和提高信息安全编程能力非常有帮助。同时,这也是一个基础的密码学实践,有助于进一步研究...
C/C++是两种广泛使用的编程语言,特别是在系统级编程、游戏开发和高性能计算等领域。C++是C语言的扩展,引入了面向对象编程的概念。在编程过程中,理解并有效地使用库函数是至关重要的,因为它们提供了标准功能,...
总之,这个MATLAB支持包使得用户能够使用MinGW-w64编译器在MATLAB环境中编写C、C++和Fortran代码,同时与TrueTime 2.0工具箱配合,实现对实时系统行为的模拟和分析。通过这个包,开发者可以充分利用编译型语言的性能...
本文将深入探讨如何使用C++在Windows操作系统下实现对NTFS(New Technology File System)和FAT32(File Allocation Table 32)文件系统中删除文件的恢复。 首先,我们需要了解文件在被删除后的情况。在Windows系统...
c / c++ / cpp / stl 中文帮助文档手册chm格式下载 C/C++ 语言参考 基本C/C++ 预处理命令 操作符优先级 转义字符 ASCII码表 基本数据类型 关键字 标准 C 库: Standard C I/O Standard C String...
这个文档压缩包包含普通C/C++中文文档和蓝桥杯比赛时用的文档,C/C++中文文档是最新版,支持到C++20和C18,且包含以前版本的内容。蓝桥杯蓝桥杯C/C++组用的文档比正常文档更简略,但包含了ASCII码表。
在C++中实现文件系统,开发者需要理解文件I/O操作、目录结构和文件权限等基本概念。C++标准库提供了一系列的文件操作函数,如fstream库,用于读写文件,以及dirent库,用于处理目录操作。 在这个模拟器中,文件被...
C++是一种强大的、通用的编程语言,它在C语言的基础上增加了面向对象的特性,同时也支持泛型编程和底层系统级编程。C++ API通常包括标准库(如STL,Standard Template Library)、Boost库和其他第三方库提供的接口。...
在 C/C++ 中,需要把 JAVA 中 JNI 的系统函数放到 VC 中,例如,在 JDK 中我的 JDK 装在 C 盘路径是”C:\Program Files\Java\jdk1.5.0_01\include”,把 include 下所有 .h 文件和 include\win32 下的 .h 文件复制到...
《C语言/C++信息管理系统——考勤管理系统》 在信息技术高度发达的今天,信息管理系统已经广泛应用于各行各业,其中考勤管理系统作为企业管理中的重要一环,能够有效地帮助企业进行员工出勤情况的跟踪与管理。本...
根据sublime text3 界面为模板,配置keil界面。 使用方法: 下载文件,进入keil安装目录,使用下载的文件替换安装目录中的global.prop,然后就可以正常使用的
在这个项目中,C/C++被用来实现文件的逆向转换,这需要深入理解语言特性,如指针操作、内存管理以及文件I/O。 2. **文件操作**:在C/C++中,文件操作通过标准库中的`<fstream>`头文件实现。逆向转换可能包括读取...
在本项目中,"C/C++仿真实现Linux文件系统"是一个旨在理解和模拟Linux操作系统核心功能的实践项目,特别是关注于文件系统相关的部分。通过这个项目,开发者可以深入理解文件系统的内部工作原理,包括文件的创建、...