|
看了下之前的回复,上次研究此bug已经是差不多一年半以前的事情了,我也记不太清除当初为何才用了这种信息对比排除法,感觉代码写多了有时候想法会陷入误区,无法达到当局者也清的境界。
根据之前的记载及刚刚的测试,det disk/list vol获取的卷号的确是正确的,sel part/det part获取的卷号是错误的。既然如此,以det disk/list vol获取的正确卷号通过sel vol/det vol /det part就能获取对应的磁盘与分区的关系,这样依然能获取卷对应的磁盘分区,磁盘的卷列表,这样就跳过这个卷号错误的bug了。
不过呢,选择卷和选择分区获取信息都有bug,我记得有的选择卷获取不到分区信息,有的选择分区获取不到卷信息
刚刚又试了一下,目前发现det disk/list vol获取的卷号还是比较准确的,sel part/det part的bug远不止卷号错误这么简单,目前发现的bug可能只是冰山一角,有属性的都容易出错,下面这种情形连卷号都获取不到了(这也导致了2.6.4中该卷号无法获取的bug),但是选择卷获取正常。diskpart真是从让人从研究到放弃,这bug何其多啊,让人产生一种用编程语言重写的冲动,可惜我不会……
我在考虑,要不要从第一步list vol获取卷号及卷部分信息,det disk获取磁盘所属卷信息,改成将获取的磁盘卷号通过sel vol/det vol/det part获取信息来规避卷号错误bug,不过不知道用的多了会不会发现新的bug。
8.1系统
- DISKPART> det disk
- Microsoft Virtual Disk
- 磁盘 ID: {F728F485-3491-4096-AC8A-F1DD4A3682E1}
- 类型 : 虚拟备份的文件
- 状态 : 联机
- 路径 : 0
- 目标 : 0
- LUN ID : 2
- 位置路径 : UNAVAILABLE
- 当前只读状态: 否
- 只读: 否
- 启动磁盘: 否
- 页面文件磁盘: 否
- 休眠文件磁盘: 否
- 故障转储磁盘: 否
- 群集磁盘 : 否
- 卷 ### LTR 标签 FS 类型 大小 状态 信息
- ---------- --- ----------- ----- ---------- ------- --------- --------
- 卷 8 RAW 磁盘分区 2048 MB 正常 已隐藏
- 卷 9 NTFS 磁盘分区 28 GB 正常
- 卷 10 RAW 磁盘分区 100 MB 正常 已隐藏
- 卷 11 NTFS 磁盘分区 1024 MB 正常 已隐藏
- DISKPART> list part
- 分区 ### 类型 大小 偏移量
- ------------- ---------------- ------- -------
- 分区 1 保留 128 MB 17 KB
- 分区 2 系统 100 MB 129 MB
- 分区 3 恢复 1024 MB 229 MB
- 分区 4 主要 2048 MB 1253 MB
- 分区 5 主要 28 GB 3301 MB
- DISKPART> sel part 4
- 分区 4 现在是所选分区。
- DISKPART> det vol
- 没有选择卷。
- 请选择一个卷,再试一次。
- DISKPART> det part
- 分区 4
- 类型 : ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
- 隐藏 : 是
- 必需: 是
- 属性 : 0XF000000000000001
- 字节偏移: 1313865728
- 没有跟这个分区相关联的卷。
- <blockquote>DISKPART> sel vol 8
复制代码
|
|