FAT16文件系统解析(C#版本)

深入了解FAT文件系统 FAT文件系统由于其简单性和兼容性,仍然在许多领域广泛应用。了解其内部结构和工作原理有助于更好地管理和维护存储设备,同时在需要时也可以进行数据恢复和故障排除。希望这篇博客能够帮助你更好地理解FAT文件系统的运作机制。 阅读详情
public class DiskBase
{
    
...        

    
//系统引导记录(兼容FAT16和FAT32)

    
//文件系统判断(采用微软的判断方法)        
    public static byte IsType(byte[] bytData)
    
{
        
//不是合法BPB扇区数据
        if (bytData[510] != 0x55 || bytData[511] != 0xaa) return 0;

        
//跳转指令不合法
        if (bytData[0] != 0xeb && bytData[0] != 0xe9) return 0;

        
//每扇区包含的字节数(一般为512个字节)
        UInt16 BPB_BytsPerSec = (UInt16)(bytData[12] << 8 | bytData[11]);

        
//仅处理512个字节的扇区
        if (BPB_BytsPerSec != 512) return 0;

        
//每簇扇区数
        byte BPB_SecPerClus = bytData[13];
        
//保留扇区数
        UInt16 BPB_RsvdSecCnt = (UInt16)(bytData[15] << 8 | bytData[14]);
        
//FAT表的个数
        byte BPB_NumFATs = bytData[16];

        
//FAT表的个数必须为2
        if (BPB_NumFATs != 2) return 0;

        
//根目录项数(32字节为单位)
        UInt16 BPB_RootEntCnt = (UInt16)(bytData[18] << 8 | bytData[17]);
        
//分区总扇区数(<32M时用)
        UInt16 BPB_TotSec16 = (UInt16)(bytData[20] << 8 | bytData[19]);
        
//每个FAT占的扇区数
        UInt16 BPB_FATSz16 = (UInt16)(bytData[23] << 8 | bytData[22]);
        
//分区总扇区数(>=32M时用)
        UInt32 BPB_TotSec32 = (UInt32)(bytData[35] << 24 | bytData[34] << 16 | bytData[33] << 8 | bytData[32]);
        
//每个FAT占的扇区数(FAT32)
        UInt32 BPB_FATSz32 = (UInt32)(bytData[39] << 24 | bytData[38] << 16 | bytData[37] << 8 | bytData[36]);

        UInt64 FATSz 
= 0, TotSec = 0, DataSec = 0;
        UInt64 RootDirSectors 
= (UInt64)(((BPB_RootEntCnt * 32) + (BPB_BytsPerSec - 1)) / BPB_BytsPerSec);

        
if (BPB_FATSz16 != 0)
            FATSz 
= BPB_FATSz16;
        
else
            FATSz 
= BPB_FATSz32;

        
if (BPB_TotSec16 != 0)
            TotSec 
= BPB_TotSec16;
        
else
            TotSec 
= BPB_TotSec32;

        DataSec 
= TotSec - (BPB_RsvdSecCnt + (BPB_NumFATs * FATSz) + RootDirSectors);
        UInt64 CountofClusters 
= DataSec / BPB_SecPerClus;
        
if (CountofClusters < 4085)
        
{
            
/* FAT 类型是FAT12 */
            
return 1;
        }

        
else if (CountofClusters < 65525)
        
{
            
/* FAT 类型是FAT16 */
            
return 2;
        }

        
else
        
{
            
/* FAT 类型是FAT32*/
            
return 3;
        }

    }
           
}
FAT16文件系统解析(C 版本) 阅读详情

相关推荐

解析Fat32文件系统

Fat32文件系统是之前windows os中常用的文件系统,在这篇文章中我们要找到: 1. 第一分区的起始扇区 2. 第一个文件文件配置表(FAT)的位置 3. 数据区域的位置 4. 文件“file1.txt”所在的簇 1  首先,用HxD打开所要解析的FAT32的文件 2  选择所要分析的文件,打开后,在起始的sector0,也就是0扇区我们就会看到该系统的主引导,

wang_luai的博客 1218

FAT32文件系统详解

则在目录项中,记录的首簇号是3,而在FAT表中,簇3对应的FAT条目里面记录的是4,,簇4对应的FAT条目记录的则是5,而簇5对应的FAT条目记录的则是结束标志 0x0FFFFFFF。它的大小是512 byte,对这个扇区有多种叫法----启动扇区(boot sector),保留扇区(reserved sector),0号扇区(0th sector)等等,在DOS分区下,又被叫做操作系统引导记录区(DOS BOOT RECORD,简称DBR)。以簇为最小存储单位,即使文件大小不足1个簇,也会占用1个簇。

云中屋的博客 1161

Windows平台NTFS与FAT32文件系统删除文件恢复工具实战开发

htmltable {th, td {th {pre {简介:本项目聚焦于Windows操作系统下NTFS和FAT32文件系统的删除文件恢复技术,基于C++或C#结合MFC框架实现图形化界面的数据恢复工具。通过分析文件系统结构,利用文件删除后数据未被立即覆盖的特性,实现对已删除文件的扫描与恢复。项目包含完整的源码结构,涵盖文件扫描算法、数据恢复逻辑、MFC用户界面设计及详细文档说明,适用于学习文件系统底层机制与数据恢复核心技术。

weixin_35433448的博客 492

第5课 - 主引导程序的扩展(下)

1. 在 FAT12 根目录中查找目标文件   在前面课程的学习中,我们知道主引导程序有一个 512 字节的限制,如何突破这种限制呢?我们想到的办法是:再写一个程序(LOADER)放到存储介质中,在主引导程序中将该程序加载到内存中,并将控制权转交给该程序(jump)。   那如何找到存储介质中的程序(LOADER)呢?答案就是需要借助一个文件系统(FAT12),将该程序放到软盘中(软盘的...

基建工时福贵 322

FAT文件系统原理(文件系统)

FAT文件系统原理: 文本结构索引:   图片表格索引: 表1 分区表参数 表2 扩展分区表项的内容 一、硬盘的物理结构 图1 硬盘的物理结构 表3 FAT32分区DBR的位置划分 二、硬盘的逻辑结构 图2 winhex下的磁盘MBR 表4 FAT32分区的BPB字段 三、磁盘引导原理 3.1 MBR扇区   图3 winhex给出的MBR参数的意义 表5 FAT32分区的扩展BPB字段 3.2 扩展分区   图4 分区表类型标志 表6 FAT16分区上的DBR组成 四、FAT分区原理 4.1 关于DBR 4.1.1 FAT32 DBR扇区 图5 一个4分区的磁盘结构图示 表7 FAT16分区的BPB字段 4.1.2 FAT16 DBR扇区 图6 分区表链接图示 表8 FAT16分区的扩展BPB字段 4.2 关于保留扇区   图7 磁盘的整体结构图示 表9 FAT16分区大小与对因簇大小 图8 winhex下的FAT32基本分区DBR图 表11 FAT16目录项的定义 4.3 FAT表和数据的存储原则 4.3.1 存储过程假想 图9 winhex给出的图8DBR参数说明 表12 FAT32分区大小与对因簇大小 4.3.2 FAT16存储原理 图10 winhex所截FAT16的文件分配表 表13 FAT表的取值含义 4.3.3 FAT32存储原理 图4.3.11 Fat16的组织形式 表14 FAT32短文件目录项的定义 五、结束 图4.3.12 Fat32的组织形式 表15 FAT32长文件目录项的定义

车载导航测试,面试常见问题

车载导航测试是汽车软件测试的重要组成部分,涉及验证导航系统的功能、性能、可靠性和用户体验。在面试中,面试官通常会考察候选人的测试思维、问题解决能力和实际经验。以下我将从常见问题类别入手,逐步介绍面试中的高频问题,并提供结构化分析。通过以上结构化准备,你能在面试中自信应对车载导航测试相关问题。用户体验测试关注界面友好性和交互流畅性,安全测试则涉及功能安全和数据隐私。功能测试聚焦于导航核心功能的正确性,如路线规划、位置定位和地图显示。面试官会考察你如何识别、报告和跟踪缺陷,以及熟悉测试工具。

m0_69889939的博客 527

结构体对齐

struct BPB16 { u16 BPB_BytsPerSec; //每扇区字节数 u8 BPB_SecPerClus; //每簇扇区数 u16 BPB_RsvdSecCnt; //DBR保留的扇区数 u8 BPB_NumFATs; //FAT表个数 u16 BPB_Unused1; //F...

weixin_42894596的博客 245

RK3568平台(camera篇)点亮imx586摄像头

mipi摄像头硬件确认点:1.供电:5V,2.8V,1.2V,1.8V,reset脚(硬拉3.3,上电的时候从低到高),pwron脚外接3.3V。2,时钟:MCLKOUT是24兆时钟。3.4组差分mipi线。mipi的data线的波形为方波。

weixin_49303682的博客 7258

全面剖析《自己动手写操作系统》第四章--FAT12文件系统

一、 FAT12 FAT12是DOS时代就开始使用的文件系统(File System),直到现在仍然在软盘上使用,FAT12软盘的被格式化后为:有两个磁头,每个磁头80个柱面(磁道),每个柱面有18个扇区,每个扇区512个字节空间。所以标准软盘的总空间为: 2 * 80 *18 * 512=1474560B=1440K=1.44M 下面是FAT12的结构图: 1、引导扇区

zgh1988的专栏 1万+

14、多标签分类与卷积神经网络在医学图像处理中的应用

本文探讨了多标签分类与卷积神经网络(CNN)在医学图像处理中的应用。文章详细介绍了多标签分类的概念和挑战,以及如何通过CNN进行高效、准确的分类任务。内容涵盖模型设计、损失函数选择、数据增强技术、类别权重调整等关键技术点,并结合实际案例,如白内障手术工具检测、视网膜血管分割等,展示了CNN在医学图像分析中的强大潜力。此外,还讨论了模型优化策略及面临的挑战与解决方案。

t8u9v0的博客 191

ZooKeeper 实战:使用 Docker Compose 部署 ZooKeeper 集群

ZooKeeper是一个开源的分布式协调服务,用于管理大型分布式系统中的数据。它由Apache软件基金会提供,最初是Hadoop的一个子项目,但后来发展成为一个独立的顶级项目。ZooKeeper提供的一致性协调服务对于构建分布式应用和服务非常重要,特别是在需要精确的领导选举、配置管理、命名服务、分布式同步和提供分布式锁等功能时。

SmartSi 1541
上一篇: ConnectionString 的配制问题
下一篇: GridView 72种实用技巧
Actionmr
博客等级 码龄19年 12粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值