LinuxDev 板


LINE

※ 引述《phterry (小風)》之銘言: : ※ 引述《Xphenomenon (啦 )》之銘言: : : 請問一下,在 Linux 下我去 open() 某一個 device 之後, : : 已知這個 device 的某一個 partition 的系統的 file, : : 我要如何去讀取他的 partition table 呢? : : 是不是要下 ioctl() ? 麻煩各位大大 :> : 磁碟的最前面 512 bytes 叫做 Master Boot Record (簡稱 MBR), : 在這 512 bytes 的 MBR 裡, 前 446 個 bytes 是放 bootloader 的地方, : 而後面 66 bytes 則是放 Partition table. : 要讀取 Partition table 並不需要用到 ioctl, 只要用 seek() 和 read() : 就可以了. 不寫程式用 dd 的方式也可以讀寫你的 partition table. 我寫了以下的程式: #include <stdio.h> #include <stdlib.h> struct PARTITIONINFO { unsigned char bootable; /* bootable? 0=no, 128=yes */ unsigned char begin_head; /* beginning head number */ unsigned char begin_sector; /* beginning sector number */ unsigned char begin_cylinder; /* 10 bit nmbr, with high 2 bits put in begsect */ unsigned char partition_type; /* Operating System type indicator code (partition type) */ unsigned char end_head; /* ending head number */ unsigned char end_secttor; /* ending sector number */ unsigned char end_cylinder; /* also a 10 bit nmbr, with same high 2 bit trick */ long int relsect; /* first sector relative to start of disk */ long int numsect; /* number of sectors in partition */ }; struct MBR { unsigned char codes_area[446]; struct PARTITIONINFO partition[4]; short int mbrid; }; int main(void) { printf("%d", sizeof(struct MBR)); return 0; } 不知道為甚麼我的輸出是 516 而不是我所預期的 512,我去 printf("%d", sizeof(struct PARTITIONINFO)) 是 16 沒錯 而 short int 也是 2 bytes, 但是整個就是不對,麻煩大大為我解答一下,感謝 :) --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.244.54.130 ※ 編輯: Xphenomenon 來自: 210.66.37.44 (08/06 14:29)
1F:推 kaichan:struct PARTITIONINFO { ... } __attribute__ ((packed)); 08/06 20:32
2F:→ kaichan:應該是少加這個 我沒有驗證 你可以試看看 08/06 20:33
3F:→ fxxkboss:應該是 strict MBR {...} __attribute__((packed)); 08/06 22:53
4F:→ fxxkboss:446變448 short int 變 int 剛好多4bytes 08/06 22:54
5F:推 kenlo1980:struct alignment? 08/07 19:19
6F:→ Xphenomenon:感謝,可以了! 08/07 19:48







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP