无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 11962|回复: 63
打印 上一主题 下一主题

[求助+讨论]  用PSI获取 NTFS 盘符及分区号 的方法 [已解决!!]

[复制链接]
跳转到指定楼层
1#
发表于 2008-5-29 14:07:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家知道用minito (minitoW)这个非常小巧的软件,可以获取硬盘分区信息,但是,我发现:
Minito 有时候出错,特别是用PQ等其他软件对分区进行操作后,minito显示的分区号不对!!!(minitow一样)
(有两个主分区时,出错的几率很大)
 
分区号如果出错,用GHOST恢复时将会造成无法挽回致命损失!!
我试了:

1、minito不可靠,有时出错!
2、GHOST准确,但不能显示NTFS分区的盘符,没用!
3、PQDI也比较准确,能显示NTFS盘符,但检测用的时间太长(我的机器上用了好几秒),且文件太大(1.4M),且不能在WINDOWS下使用

其他的我就没过了,网上也找不到。


各位高手们,都来说说,你们在DOS及WINDOWS下用什么样的获取分区软件????




=====================[已解决!!]==============================

见35楼、45楼
62楼


感谢lianjiang等各位的热心提示!!!

[ 本帖最后由 歌理 于 2008-6-5 04:34 AM 编辑 ]
2#
发表于 2008-5-29 18:30:12 | 只看该作者
只要我实现了INTERRUPTX中断接口,可以自己编一个程序,自动读写磁盘的各分区信息了,可惜还没有成功
回复

使用道具 举报

3#
发表于 2008-5-29 20:40:51 | 只看该作者
要能显示NTFS盘符说明这个程序必须在WINDOWS下运行,如果是在XP下,获得分区号也就调用几个API的事。
回复

使用道具 举报

4#
 楼主| 发表于 2008-5-29 21:11:26 | 只看该作者
原帖由 123 于 2008-5-29 08:40 PM 发表
要能显示NTFS盘符说明这个程序必须在WINDOWS下运行,如果是在XP下,获得分区号也就调用几个API的事。


dos下的minito能显示NTFS对应盘符啊。。。
通告诉我,在XP下,获得分区号调用哪几个API吗?
回复

使用道具 举报

5#
发表于 2008-5-29 21:38:56 | 只看该作者
dos下获取的ntfs分区的盘符,对于一键类工具而言,毫无意义。而且是很不可靠的。
当然其它用途则另当别论。
回复

使用道具 举报

6#
发表于 2008-5-29 21:41:25 | 只看该作者
dos下要分区号,估计也是用于一键类工具。
兼容性是第一位的,其次才是大小,效率等因素。

个人以为,兼容性差的话,再小,再快也没用。
回复

使用道具 举报

7#
发表于 2008-5-29 21:44:27 | 只看该作者
原帖由 歌理 于 2008-5-29 21:11 发表


dos下的minito能显示NTFS对应盘符啊。。。
通告诉我,在XP下,获得分区号调用哪几个API吗?

dos下的NTFS盘符是由NTFSDOS给的,没加载NTFSDOS盘符从哪来?
API是CreateFile,DeviceIOControl
回复

使用道具 举报

8#
 楼主| 发表于 2008-5-29 21:52:47 | 只看该作者
原帖由 lianjiang 于 2008-5-29 09:38 PM 发表
dos下获取的ntfs分区的盘符,对于一键类工具而言,毫无意义。而且是很不可靠的。
当然其它用途则另当别论。


取盘NTFS符,主是要判断用。

例如,在DOS下已经获取某个NTFS盘符(可用IFS帮助取得,如何取得其对应的分区号的问题。
例如,用GHOST获取时,NTFS盘对应的盘符为空。
回复

使用道具 举报

9#
发表于 2008-5-29 21:55:09 | 只看该作者
有分区号就可以了,为何还要对应盘符?
不理解。

ghost我也没用过dos下的盘符,不清楚有何理想办法。。
回复

使用道具 举报

10#
发表于 2008-5-29 22:09:15 | 只看该作者
分区引导记录里面应该没有所谓的盘符吧,盘符是由操作系统来分配的吧。不管是哪种居于MBR的引导程序,从兼容性的角度来讲,一般不会去动主分区表那块空间的。
回复

使用道具 举报

11#
发表于 2008-5-29 22:14:21 | 只看该作者
minito表示的ntfs分区的盘符,仅仅是推测出来的,而并非实际获取的。
很不可靠。
回复

使用道具 举报

12#
发表于 2008-5-29 22:30:57 | 只看该作者
所谓的盘符仅仅在进入操作系统后才有意义,它仅仅是用来挂接存储设备/设备分区而已,和操作系统及挂接方案/设置息息相关。用设备号、分区号来表示才是合适的方法(你可以看看boot.ini就是酱紫的)。

[ 本帖最后由 netwinxp 于 2008-5-29 10:33 PM 编辑 ]
回复

使用道具 举报

13#
 楼主| 发表于 2008-5-29 22:49:45 | 只看该作者
是这么回事啊:
我的GHO文件在某个(不一定最后一个,不确定)NTFS分区,我在DOS下能找到该GHO文件所在的盘符(例如F:),我想知道的是,如何知道这个F:对应的分区号(N:N),以便让GHOST自动还原,就这样。
回复

使用道具 举报

14#
发表于 2008-5-29 23:15:13 | 只看该作者
DOS可以用INT 21H AH=53H功能来获取块设备参数
参数块格式:
00H=磁盘号(0=A,80H=第一硬盘)
01H=本参数块对应的逻辑盘符
后面的字节,不同版本的DOS有点不同,具体格式和分区引导里面的BPB比较接近。
把其中的保留扇区数和分区表项/扩展分区表项比较一下就知道位置了。

[ 本帖最后由 netwinxp 于 2008-5-29 11:20 PM 编辑 ]
回复

使用道具 举报

15#
发表于 2008-5-30 09:38:57 | 只看该作者
在XP或者其它系统下,原来的D盘也可以改为F盘,也可以改为H,这个是不一定的。

最准确的应该是GHOST的1234的排法。低扇区分区在前,高的在后,一路排到全部容量;DOS中断一般都不用,用BIOS的比较好一些,通过扩展读出分区表判断比较分析,然后排出1234,然后根据扩展分区查找逻辑链,按照低扇区排前,高排后的方法确定。并获得硬盘容量,找出未用空间等
回复

使用道具 举报

16#
发表于 2008-5-30 10:18:08 | 只看该作者
楼主要的是盘符对应的分区号,呵呵。
回复

使用道具 举报

17#
发表于 2008-5-30 10:25:51 | 只看该作者
DOS下是可以从盘符查到分区的,原理就是我上面提到的(懒得编程),解决方法可参照http://www.cn-dos.net/forum/viewthread.php?tid=11275&fpage=0&highlight=&page=2
回复

使用道具 举报

18#
发表于 2008-5-30 10:31:49 | 只看该作者
原帖由 netwinxp 于 2008-5-30 10:25 AM 发表
DOS下是可以从盘符查到分区的,原理就是我上面提到的(懒得编程),解决方法可参照http://www.cn-dos.net/forum/viewthread.php?tid=11275&;fpage=0&highlight=&page=2


看不太懂,也没仔细看。
理论上讲,应该是能实现的。

[ 本帖最后由 lianjiang 于 2008-5-30 10:33 AM 编辑 ]
回复

使用道具 举报

19#
发表于 2008-5-30 10:57:05 | 只看该作者
我仔细再看了一下,那个帖子和我的方法不同,它是通过卷标来查找的,但卷标不一定会有(也可能重复),所以不那么通用(除非赋予特定卷标)。
回复

使用道具 举报

20#
发表于 2008-5-30 10:58:15 | 只看该作者
其实,DOS下只要能按物理顺序给各分区和逻辑盘排序,就可以很容易的得到对应的分区号。

所以,关键是得到分区的物理顺序。如果有一个工具可以方面的处理gdisk的显示结果,就可以达到这个目的。但楼主所说的,将dos下显示的盘符对应到相应的分区编号就比较困难了,原因在于,不同的DOS下的NTFS驱动程序,其给ntfs分区分配盘符的规则是不同的,有可能你在ntfsdos下给某个ntfs分区分配的是X:盘,但在ifs下却变成了F:盘,而且,这个盘符还是可以自己定义的,这就无法具有通用性了。

我觉得可以用ghost配合omnifs的ntfs分区读取功能来进行判断,寻找目标的ntfs分区。假设,你在xp下在要放克隆的ntfs分区上做了一个标志文件,那么你可以用omnifs来从dos下寻找这个标志文件,并进一步判断其所对应的分区号,这样就可以进一步操作了。问题就在于dos下的字符串处理功能很差,所以比较麻烦。

lianjiang兄的GGhost显示的分区列表很完美,不知道是如何实现的,在这里可以透露一下技术细节。
回复

使用道具 举报

21#
发表于 2008-5-30 11:02:02 | 只看该作者
通过卷标是不可行的。
无意义。
回复

使用道具 举报

22#
发表于 2008-5-30 11:03:57 | 只看该作者
原帖由 Climbing 于 2008-5-30 10:58 发表
其实,DOS下只要能按物理顺序给各分区和逻辑盘排序,就可以很容易的得到对应的分区号。

所以,关键是得到分区的物理顺序。如果有一个工具可以方面的处理gdisk的显示结果,就可以达到这个目的。但楼主所说的, ...

DOS下面,每个存在的盘符都会在内核数据区产生一个设备块参数(不管是操作系统生成的或者设备驱动程序生成的),而设备块参数就是源自于BPB(并加上了磁盘号和盘符等信息),这个参数块可以通过53H来获得,通过对其中的设备号、保留扇区数与分区表项/扩展分区表项比较可以清楚具体分区,而且对多硬盘同样有效。XP下面俺不清楚:(

[ 本帖最后由 netwinxp 于 2008-5-30 11:09 AM 编辑 ]
回复

使用道具 举报

23#
发表于 2008-5-30 11:06:50 | 只看该作者
原帖由 Climbing 于 2008-5-30 10:58 AM 发表
lianjiang兄的GGhost显示的分区列表很完美,不知道是如何实现的,在这里可以透露一下技术细节。


我的gghost中显示的分区信息,就是omnifs获取的原始信息。
格式都没动,仅仅是剔除了windows和dos无法处理的分区(仅保留ntfs,fat分区)。
对备份而言,还要求保存备份的分区不能是未格式化的;
而恢复则对目标分区无此限制。
回复

使用道具 举报

24#
发表于 2008-5-30 11:54:20 | 只看该作者
原帖由 netwinxp 于 2008-5-30 11:03 AM 发表

DOS下面,每个存在的盘符都会在内核数据区产生一个设备块参数(不管是操作系统生成的或者设备驱动程序生成的),而设备块参数就是源自于BPB(并加上了磁盘号和盘符等信息),这个参数块可以通过53H来获得,通过对 ...

问题是,假如没有人写出现成的程序,而是个使用者自己搞的话,显然是不现实的。
回复

使用道具 举报

25#
发表于 2008-5-30 13:48:26 | 只看该作者
楼主应该是在搞全自动的ghost恢复
我最近也在搞这个东西,已经有一个样本了,可是不太完美,最大的问题就是楼主说的dos中读取硬盘分区,我想只要这个问题没解决,基于dos的全自动ghost就有问题
我觉得楼主的思路太狭隘了,全dos下的自动ghost做不了,你可以考虑windows和dos相结合啊
另你可以多分析下别人做出的一键还原
回复

使用道具 举报

26#
 楼主| 发表于 2008-5-31 17:19:28 | 只看该作者
谢谢各位的参与!!尽管各位的意见并没有解决我提出的问题。

我估计各位对这个问题的理解或者重视程度不是很准确。我要用GHOST做的事情是:

我的WINDows或者其他系统放在NTFS分区的D盘或者F盘等(例如多系统),(请各位不要问为什么不放C盘这样的问题),我可以通过IFS或者ntfs4dos判断出是D盘还是F盘,现在的问题是,如果不知道D或者F盘对应的分区号,那么GHOST将没有办法自动运行,就这么简单!!

我试了好几,包括GHOST、GDISK、PQDI、MNIFS等等,均不能同时显示分区号及NTFS盘符。(顺便说明一下,GHOST11.5可以在WINDOWS下同时显示分区号及NTFS盘符,DOS下还不行。)

目前唯一能做的就是minito,但是不稳定,有时出错!

正确的排序是F:-G:-C:-D:-E:

[ 本帖最后由 歌理 于 2008-5-31 05:23 PM 编辑 ]

错误分区号.jpg (23.85 KB, 下载次数: 76)

错误分区号.jpg
回复

使用道具 举报

27#
 楼主| 发表于 2008-5-31 17:51:56 | 只看该作者

回复 #26 歌理 的帖子

发现一个奇怪问题,用PQ8.05分区,总是让Minito不出错,用PQ分好后,再用DISKgen重新定分区后,MINIto就正常了,不知道为什么。(我的系统经常出现,PQ8.05与WINPM兼容问题,用PQ8.05分区后,再进入PE, PTTD提示分区表错,用WINPM重新分区后,正常了,但进入PQ8.05,PQ提示分区错误,两者总有一个提示是错的,不知何故?各位是否碰到过?

了.jpg (23.95 KB, 下载次数: 71)

了.jpg
回复

使用道具 举报

28#
发表于 2008-5-31 18:25:20 | 只看该作者
到目前为止,正如你说说,包括pm,ghost等都无法显示ntfs的分区对应的盘符,甚至微软也没有工具有此功能,说明了,可以说是不可能实现的。一个人做不到,很正常,大家都做不到,还不能说明问题吗?呵呵。
而minito显示出来的,是无法保证正确的,因此作为通用工具,也是毫无意义的。
当然不排除在特定的机上能正确显示。

纯属个人观点。
回复

使用道具 举报

29#
 楼主| 发表于 2008-5-31 23:37:33 | 只看该作者
原帖由 lianjiang 于 2008-5-31 06:25 PM 发表
到目前为止,正如你说说,包括pm,ghost等都无法显示ntfs的分区对应的盘符,甚至微软也没有工具有此功能,说明了,可以说是不可能实现的。一个人做不到,很正常,大家都做不到,还不能说明问题吗?呵呵。
而mi ...


我估计,也就你能完全明白我想表达的意思,所见略同,谢谢!
如果真如你所说,我也放弃了,另行寻求其他解决办法。
我还没有试验,看以下两种方法是否可行:
1是通过VOL结合判断
2是minito与MNIFS结合,minito给出盘符对应的分区号,用MNIFS的copy命令判断minito是否正确(可惜MNIFS的命令只有那么几个,如果再多几个那就完全能解决了)。这个解决方法100%能行,缺点是MNIFS文件太大,占用IMG空间,另一个MNIFS运行时间长(用好几秒),效率低。如果没有其他解决方法,看来只有此一道了。等我试好了,再分享。


再次感谢。

[ 本帖最后由 歌理 于 2008-5-31 11:50 PM 编辑 ]
回复

使用道具 举报

30#
 楼主| 发表于 2008-5-31 23:51:57 | 只看该作者
原帖由 wang6610 于 2008-5-31 08:01 PM 发表
我猜楼主不知道啥叫盘符错乱;

同时也不知道windows能随意指定分区盘符(系统分区好像不能)。


我不知道你知道什么,更不知道你想说什么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-6-12 23:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表