作者bleed1979 (十三)
看板C_and_CPP
标题Re: [问题] MBR 的问题
时间Wed Dec 2 15:50:05 2009
提供一点资讯好了,不知道有没帮助,也不确定对
[begin]
head 01
sector 01
cylinder 00
[end]
head fe
sector 3f
cylinder 3ff
此硬碟head 255, sector 63, cylinder 1024
初步估计应该是 255 * 63 * 1024 * 512 = 8422686720 约8.4GB
还有,因为是little endian的关系
sectors size in this partition应该是03 a9 a1 72
可是综合以上两个数据兜不太起来
255*63*1024=16450560
0x03a9a172=61448562
有请各位高手解释了
Bleed
※ 引述《bombilla (地板别打我!>"<)》之铭言:
: ( *[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时遇到的问题所以…就贴在这了。
--
World of bleed1979
http://bleed1979.myweb.hinet.net/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.177.97