自制程序读取FAT32文件系统上的文件

winxp上无法识别大容量的FAT32分区,这时候需要自己写个小程序来获取分区中的文件。

一、FAT32文件系统简介

(一)硬盘主引导扇区

硬盘主引导扇区 = 硬盘主引导记录(MBR+ 硬盘分区表(DPT

 

硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2N次方(N0.1.2.3)字节信息。在DOS中每扇区是128×22次方=512字节,盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。硬盘中,不同盘片相同半径的磁道所组成的圆柱称为柱面。磁道与柱面都是表示不同半径的圆,在许多场合,磁道和柱面可以互换使用,我们知道,每个磁盘有两个面,每个面都有一个磁头,习惯用磁头号来区分。扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数,帮这些参数可以得到硬盘的容量,基计算公式为:
存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数

要点:(1)硬盘有数个盘片,每盘片两个面,每个面一个磁头

2)盘片被划分为多个扇形区域即扇区

3)同一盘片不同半径的同心圆为磁道

4)不同盘片相同半径构成的圆柱面即柱面

5)公式: 存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数

6)信息记录可表示为:××磁道(柱面),××磁头,××扇区

 

物理位置:001扇区(clindyer 0, side 0, sector 1)

大小: 512字节0

其中:MBR 446字节(0000--01BD),DPT 64字节(01BE--01FD),结束标志2字节(55 AA

功能:MBR通过检查DPT分区信息引导系统跳转至DBR

读取: 使用NORTON DISKEDIT, OBJECT菜单中选择DRIVE——>PHYSICAL DISK-HARD DISK,

然后, OBJECT菜单中选择DISK PARTITION TABLE即可读取, 并使用TOOLS菜单中的WRITE OBJECT TO 选项存入指定文件备份;

写入: 使用NORTON DISKEDIT, OBJECT菜单中选择DRIVE——>FLOOPY DISK, 选择备份的DPT

文件, 然后使用TOOLS菜单中的WRITE OBJECT TO——>PHYSICAL SECTOR 选项写入001

(clindyer 0, side 0, sector 1);

 

详解:

000H--08AH MBR启动程序(寻找开机分区)

08BH--0D9H MBR启动字符串

0DAH--1BCH 保留("0")

1BEH--1FDH 硬盘分区表

1FEH--1FFH 结束标志(55AA)

 

 

活动分区主引导扇区(DBR

--------------------------

物理位置:101扇区(clindyer 0, side 1, sector 1)

大小: **T16 1扇区 512字节

**T32 3扇区 1536字节

功能:包含机器CMOS等信息(0000--0059, 核对该信息并引导指定的系统文件, NTLDR等;

读取: 使用NORTON DISKEDIT, OBJECT菜单中选择DRIVE——>LOGICAL DISK-DISK C,

然后, OBJECT菜单中选择BOOT RECORD即可读取, 并使用TOOLS菜单中的

WRITE OBJECT TO 选项存入指定文件备份;

写入: 使用NORTON DISKEDIT, OBJECT菜单中选择DRIVE——>FLOOPY DISK, 选择备份的DBR

文件, 然后使用TOOLS菜单中的WRITE OBJECT TO——>PHYSICAL SECTOR 选项写入011

(clindyer 0, side 1, sector 1);

 

 

详解:

 

000H--002H 3 BYTE的跳转指令(去启动程序, 跳到03EH)

003H--03DH BIOS参数区

03EH--19DH DOS启动程序

19EH--1E5H 开机字符串

1E6H--1FDH 文件名(IO.SYS, MSDOS.SYS)

1FEH--1FFH 结束标记(55AA)

 

硬盘分区表(DPT

---------------------

01BE 1 分区类型:00表示非活动分区:80表示活动分区;其他为无效分区。

01BF~01C1 3 *分区的起始地址(面/扇区/磁道),通常第一分区的起始地址开始

101扇区,因此这三个字节应为010100

01C2 1 #分区的操作系统的类型。

01C3~01C5 3 *该分区的结束地址(面//道)

01C6~01C9 4 该分区起始逻辑扇区

01CA~01CD 4

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值