如何判断分区的格式

llg84 2007-07-24 10:16:15
在不能使用Windows API获取分区信息的情况下,依靠DBR能准确判断分区格式么?特别是判别是NTFS还是FAT。另外微软关于FAT的白皮书上说区分FAT12,FAT16以及FAT32的方法是分区上簇的数量,但是使用第三方格式化工具的话,用这种方法似乎可能出错,不知道有没有其它准确的方法
...全文
642 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Uindex 2007-08-16
  • 打赏
  • 举报
回复
从Word里复制的,表格怎么变成这样了,怎么看啊
Uindex 2007-08-16
  • 打赏
  • 举报
回复
DBR中的纪录好像没有关于分区格式的

在MBR和BPB中有个字段(byFSID)专门记录分区格式,目前已知的分区格式接近100种

00 Empty 1c Hidden Win95 FA 70 DiskSecure Mult bb Boot Wizard hid
01 FAT12 1e Hidden Win95 FA 75 PC/IX be Solaris boot
02 XENIX root 24 NEC DOS 80 Old Minix c1 DRDOS/sec (FAT-
03 XENIX usr 39 Plan 9 81 Minix / old Lin c4 DRDOS/sec (FAT-
04 FAT16 <32M 3c PartitionMagic 82 Linux swap c6 DRDOS/sec (FAT-
05 Extended 40 Venix 80286 83 Linux c7 Syrinx
06 FAT16 41 PPC PReP Boot 84 OS/2 hidden C: da Non-FS data
07 HPFS/NTFS 42 SFS 85 Linux extended db CP/M / CTOS / .
08 AIX 4d QNX4.x 86 NTFS volume set de Dell Utility
09 AIX bootable 4e QNX4.x 2nd part 87 NTFS volume set df BootIt
0a OS/2 Boot Manag 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access
0b Win95 FAT32 50 OnTrack DM 93 Amoeba e3 DOS R/O
0c Win95 FAT32 (LB 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor
0e Win95 FAT16 (LB 52 CP/M 9f BSD/OS eb BeOS fs
0f Win95 Ext'd (LB 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT
10 OPUS 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/
11 Hidden FAT12 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b
12 Compaq diagnost 56 Golden Bow a7 NeXTSTEP f1 SpeedStor
14 Hidden FAT16 <3 5c Priam Edisk a8 Darwin UFS f4 SpeedStor
16 Hidden FAT16 61 SpeedStor a9 NetBSD f2 DOS secondary
17 Hidden HPFS/NTF 63 GNU HURD or Sys ab Darwin boot fd Linux raid auto
18 AST SmartSleep 64 Novell Netware b7 BSDI fs fe LANstep
1b Hidden Win95 FA 65 Novell Netware b8 BSDI swap ff BBT

如果可以直接读取硬盘,根据这个表判断分区格式就容易了。
llg84 2007-08-01
  • 打赏
  • 举报
回复
能直接用这个函数就好办了......因为实现的最终目标中硬盘上的格式windows是无法识别的,所以需要自己写程序分析
feilonghai 2007-08-01
  • 打赏
  • 举报
回复
BOOL GetVolumeInformation(
LPCTSTR lpRootPathName, // address of root directory of the
// file system
LPTSTR lpVolumeNameBuffer, // address of name of the volume
DWORD nVolumeNameSize, // length of lpVolumeNameBuffer
LPDWORD lpVolumeSerialNumber, // address of volume serial number
LPDWORD lpMaximumComponentLength,
// address of system's maximum
// filename length
LPDWORD lpFileSystemFlags, // address of file system flags
LPTSTR lpFileSystemNameBuffer, // address of name of file system
DWORD nFileSystemNameSize // length of lpFileSystemNameBuffer
);

lpFileSystemNameBuffer返回的就是你要的
llg84 2007-08-01
  • 打赏
  • 举报
回复
我不是要让第三方工具识别,我是要自己写个识别程序,就是怕只按照簇数判别不准,另外该如何区分NTFS和FAT呢?
cddolphin 2007-07-26
  • 打赏
  • 举报
回复
windows一般按照簇数来判断FAT的类型,但是有的第三方工具却靠识别U盘DBR或MBR(有的U盘有MBR)中的标识字段来确定FAT类型,因此你可以先根据簇数填写标识字段,然后第三方工具就可以正确识别.
llg84 2007-07-24
  • 打赏
  • 举报
回复
逻辑分区第一扇区(DBR)中并没有明确指明分区所采用的文件系统,虽然会有相关的字符串,但是这个好像是不能作为依据的,MBR中虽然有分区文件系统信息,但是U盘是没有MBR的吧?
bluetooth_2001 2007-07-24
  • 打赏
  • 举报
回复
每个逻辑分区的第一个扇区记载有相关信息的~~

关于MBR:http://mirror.href.com/thestarman/asm/mbr/index.html

讲述NTFS结构:http://www.ntfs.com

网上关于FAT的资料很多,数据结构公开,但是NTFS微软好像拒绝公开~~
本工具多次测试均未出现问题,可以使用,如果发现自己无法使用,请先看下面介绍与说明 谢谢!! 感谢驴友yxrsys,在verycd发布资源 非安装软件,直接双击运行,傻瓜式修复,可运行于32位和64位系统和WINPE系统 程序根据当前系统non-Unicode设置自动显示中/英界面 "自动修复"自动判断和系统启动有关的条件并自动修复程序支持的盘符上的NT系统启动,无需用户手工干预 "高级修复"只供特殊需要的朋友,参看下面应用实例中的高级修复部分 PE中自动判断PE环境,单硬盘可以直接"自动修复",如多硬盘在PE中修复时推荐使用"高级"修复选择你作为系统引导的盘符 适用范围: -------- 1.启动菜单/启动文件丢失修复: 适用所有NT5.x(2000/XP/2003)和NT6.x(Vista/2008/Win7/2008r2) 2.修复其他因BCD相关引起的故障 a. Win7/2008r2中 BCD 的修复计算机(Windows Recovery Environment)菜单丢失 b. Win7/2008r2中 BCD 引起的3D启动画面丢失(变成VISTA滚动条启动画面) c. BCD 引起的启动菜单选择界面乱码现象 3.系统BCD非法的强制修复 - 现象:Vista/2008/Win7/2008r2中 a. 运行msconfig后"启动"或"引导"栏空白 b. 管理员身份运行命令提示符中后运行bcdedit等和BCD相关的操作提示出错 c. 系统属性的"启动和故障恢复"窗口无法配置"默认操作系统"和"等待时间" d. 其他软件无法添加/删除/修改基于 BCD 管理的新启动菜单 注: 3的这种情况是否要强制修复自行决定。 额外功能: 为VISTA/2008添加修复计算机(Windows Recovery Environment)菜单 使用方法:在系统盘符中新建recovery文件夹,再把光盘或安装程序中的boot\boot.sdi和sources\boot.wim复制至 recovery文件夹,再运行本程序,即可自动添加。 修复效果: 存在原BCD或Boot.ini时程序将予备份,备份文件名/路径在修复完成后给出提示 NT5.x菜单在boot.ini中以"Microsoft Windows Server 2003 x86"形式存在 NT6.x菜单在BCD中以"Windows Server ® 2008 Standard x86"形式存在 NT6.x的修复过程提示成功即时写入生效,NT5.x的修复在最后完成后再一并写入生效 NT5.x支持最多同接8个硬盘时的修复,但如果不同接口硬盘混用且三个或以上硬盘就未必能准确判断硬盘号,三硬盘以上 并混用的情况就算微软自己的控制台都未必能准确判断 NT6.x理论无限制硬盘数,也不限制混用 根据当前系统non-Unicode设置决定修复后的启动菜单中/英优先级 NT5.x+NT6.x的多系统中 - 当存在多个NT5.x时,修复后BCD显示的NT5.x相应菜单为“Earlier Version of Windows”, 当只有一个NT5.x系统,修复后BCD中显示的NT5.x相应菜单则为类如"Microsoft Windows Server 2003 x86"格式 不修复NT5.x的Boot.ini和NT6.x的BCD中的多余的启动菜单 因为精简版的精简程度无从判断,所以不保证能修复精简版系统启动故障 自BCDautofix发布以来极少回答一些朋友在使用上的疑问,这里和NTBOOTautofix一并释疑 一、BUG报告:readme中写的邮箱我极少打开,所以未必能及时回信。 二、请不要拿本工具和EasyBCD或VistaBoorPro等工具作比较: 那类工具重在管理 - 如改启动菜单名,添加/删除菜单等,要用在修复功能上需要使用者自己了解故障原因和解决流程后 才能手工修复,多数情况下其手工也无法完美修复。 而本工具重在修复,修复功能大多是那类工具无法实现的,当然本工具也不能实现那类工具的管理操作。 三、程序用批处理编写:请看不起批处理的免下载使用而避免下载后浪费诸多表情 四、如不能修复请自己先了解一下是否程序适用范围内:例如有些硬件原因引起的3D启动画面不存在,象这类的非BCD引起的类似故障是此工具无法处理的 五、手工处理教程为什么不写:其实以前曾经写过很多,但并不多人看,有时一个“活动分区”的识别就要大花唇舌说明,一句bcdedit /set {ntldr} description "Microsoft Windows XP"或bootsect /nt60 sys可以解决的手工处理方式不少人都

2,641

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧