社区
驱动开发/核心开发
帖子详情
请问在NT, w2k, winXP 下的应用程序如何得知一个硬盘文件占用了哪些扇区?
alphasun
2003-07-08 01:44:42
rt
...全文
61
11
打赏
收藏
请问在NT, w2k, winXP 下的应用程序如何得知一个硬盘文件占用了哪些扇区?
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jbz
2004-01-30
打赏
举报
回复
收藏
gzwy
2003-07-25
打赏
举报
回复
要想知道 文件占用了哪些扇区 一定要访问FAT表的呀。 jljljjl(菜鸟1/2) 老兄说的很清楚 了。
alphasun
2003-07-14
打赏
举报
回复
唉,看来是千难万险啊
linyudie
2003-07-13
打赏
举报
回复
去ms找规范来分析
谢继雷
2003-07-13
打赏
举报
回复
下面仅针对FAT-32文件系统,FAT-12,16类似;如果是NTFS劝你放弃。
设文件的路径是 \dir1\dir2\abc
第一步是找到根目录项:
在FAT-32分区引导记录中 偏移+42h 字节若 == 29h,那么 +2Ch 的DWORD指出根目录簇号,否则根目录簇号是2。
第二步是找到abc的目录项:
根目录结合FAT找到dir1的起始簇,再dir1结合FAT查找dir2的起始簇;直到找到abc的起始簇;
目录表中每一个目录项占用32字节,其中偏移+0Ah的WORD记录起始簇号的高半字,+10h记录起始簇号的低半字。
簇到扇区的计算方法:
(LBA)扇区索引 = FAT32分区起始扇区+保留扇区数+FAT扇区数*2+(簇号-2)*扇区每簇
保留扇区 位于 引导记录偏移 +0Eh 处的WORD,
扇区每簇 位于 引导记录偏移 +0Dh 处的BYTE。
其中FAT扇区数麻烦一点,如果 引导记录偏移 +42h 字节==29h, 则
FAT扇区数是 +24h 的 DWORD,
否则FAT扇区数是 +16h 的 WORD。
每个簇对应的 FAT 表项位置(相对于分区起始的字节偏移)
表项偏移=保留扇区数*512+簇号*4 (DWORD)
如果访问的是备份FAT表,则上面还要加上一个 FAT扇区数*512
对于FAT-16,上面是簇号*2 (WORD)
对于FAT-12,上面是簇号*1.5,乘积的整数部分 作为偏移:如果是偶簇,则偏移处字节作为12位数值的低8位、紧跟在后面的字节的低4位作为12位数值的高4位;如果是奇簇,则偏移处字节的高4位作为12为数值的低4位,紧跟在后面的字节作为12位数值的高8位。好在FAT-12现在很少用到了。:)
第三步就是用这些信息把文件的各个扇区找出来:
在FAT-32中文件是按簇组织的,因此只要把找出来的每一个簇,读取该簇所在的连续几个扇区就行了,也就是“扇区每簇”中记录的扇区数。一般常见的簇是4096或8192,也就是8个或16个扇区,因此一个簇号将对应8个或16个扇区。如果簇号是0FFFFFF8~0FFFFFFF之一则表示结束,这时就不必再继续找啦!
alphasun
2003-07-10
打赏
举报
回复
up11
alphasun
2003-07-09
打赏
举报
回复
额。。。。我有一个变通的方法了:)
xiaohedou
2003-07-09
打赏
举报
回复
我想应与NTFS的结构有关!请先查阅一下。
ajn_sailing
2003-07-09
打赏
举报
回复
up
alphasun
2003-07-09
打赏
举报
回复
up
alphasun
2003-07-08
打赏
举报
回复
up
整理的AD/2000技巧
把安装
文件
拷贝到
硬盘
,打开i386目录下的setupp.ini,将PID后面的数字改成51837270,那么在整个安装过程中就不会再问你输入序列号了。 方法二:将该
文件
内容全部删除后,再改写成如下资料:[Pid] Pid = "42144270"
用EasyBoot轻松做启动光盘
原版系统安装盘的缺憾 —— 不管是
Win
dows 98还是
Win
dows
NT
/ 2000 /
XP
,仅能实现单一系统的初始安装...EasyBoot是一款集成化的中文启动光盘制作工具,它可以制作光盘启动菜单、自动生成启动
文件
,并生成可启动ISO...
Win
2k高级技巧 -----引用至某BLOG.保存了很久了.
把安装
文件
拷贝到
硬盘
,打开 i386目录下的setupp.ini,将PID后面的数字改成51837270,那么在整个安装过程中就不会再问你输入序列号了。 方法二: 将该
文件
内容全部删除后,再改写成如下资料: [Pid] Pid = ...
Win
dows2000高级技巧
转自网上,http://www.netxeyes.com/ 上面布衣发的一封帖子,内容不错,就转过来了。...把安装
文件
拷贝到
硬盘
,打开 i386目录下的setupp.ini,将PID后面的数字改成51837270,那么在整个安装过程中就不会再问
多个镜像
文件
刻在一张光盘上
(一)前提条件 准备打造N合1系统安装光盘的各个ISO,必须均为可启动光盘镜像。 检验方法:用UitraISO软件打开ISO,如果左上角的光盘目录中有“可引导光盘”(可启动UDF==可启动光盘镜像)提示,即为标准的能够光驱...
驱动开发/核心开发
21,597
社区成员
21,709
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章