看板 C_and_CPP 關於我們 聯絡資訊
提供一點資訊好了,不知道有沒幫助,也不確定對 [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