作者bombilla (地板别打我!>"<)
看板C_and_CPP
标题[问题] MBR 的问题
时间Wed Dec 2 10:37:49 2009
( *[1m *[m 为色码,可以按 Ctrl+V 预览会显示的颜色 )
( 未必需要依照此格式,文章条理清楚即可 )
遇到的问题: (题意请描述清楚)
MBR 中的 partition table 的问题。
就是在 MBR 中我们都知道前 446 bytes 是用来开机用的。
接着就是 64 bytes 的 partition table。每个 table 16 bytes。
以下是直接从我电脑弄出来的某一个 partition table:
80 01 01 00 07 fe ff ff 3f 00 00 00 72 a1 a9 03
-- -------- -- -------- ----------- -----------
其中,(1) 01 01 00 是 starting CHS。
(2) fe ff ff 是 ending CHS
(3) 72 a1 a9 03 是 sectors size in this partition。
照理说 (3) = (2) - (1) 的,但此例子中明显不是,主要原因是(2)的值。
我在 google上查询的结果只找得到这段话:
For partitions which begin or end beyond the 1024th cylinder, the three CHS
bytes should always be filled with: FE FF FF。
我第一个问题就是…我还是看不懂在什麽时机下(1)或是(2)会被填成 fe ff ff??
还是有机会(1)和(2)同时被填 fe ff ff 吗??
第二个问题就是如果被填成fe ff ff,如果(3)的值遗失了或怎麽样,反正我必须藉由
(1)和(2)去算出来,那这时候该怎麽算??
希望有人能给点指引~~
任何资讯都好,感谢~
希望得到的正确结果:
(1) + (2) = (3)。
程式跑出来的错误结果:
开发平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
linux。
有问题的code: (请善用置底文标色功能)
补充说明:
因为我看了看板的分类好像没似合问这个问题的地方,
然後这又是我最近在coding时遇到的问题所以…就贴在这了。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.64.47
2F:→ macshieh:你只要看这个标题"MBRs and disk partitioning" 12/02 11:00
3F:→ bombilla:抱歉,m大,这个网页我之前就看过了,到现在页面还没关掉 12/02 12:44
4F:→ bombilla:里面的内容无法解决我的问题说~~能麻烦m大再拨空解释一下 12/02 12:46
5F:→ bombilla:吗??感谢~~ 12/02 12:46
6F:推 phterry:一.(1)和(2)有可能同时被填fe ff ff, 只要partition的位置 12/03 21:31
7F:→ phterry: 超过 8.4G 12/03 21:32
8F:→ phterry:二. 如果(3)的值遗失,在超过8.4G的区域,是不能由(1)和(2) 12/03 21:33
9F:→ phterry: 算回来的. 12/03 21:33
10F:→ bombilla:嗯~~感谢~p大的解说,多谢了!! 12/10 19:54