问题描述
据我所知,MBR 大小为 512 字节,以 0x55AA 结尾。
我的问题是:
-
磁盘扇区大小大于 512 字节的情况有多常见? (例如服务器中使用的磁盘等)
-
如果扇区大小为 4096,MBR 将如何存储?第 4095 个字节等于 0x55 还是第 511 个字节?
-
在我的 C 代码中读取 MBR 之前是否需要检查扇区大小?这是我需要担心的事情,还是只读取磁盘的第 512 个字节就足够了?
解决方法
即使底层硬件使用更长的块,大多数设备也提供“标准”接口,其中块大小为 512 字节。
如果扇区的大小大于 512 字节,则 MBR 将看起来完全相同的字节。所有数据都将处于相同的偏移量。只是扇区的剩余部分不会被使用。
如果扇区大小小于 512 字节,则 MBR 将占用多个扇区。
在我的 C 代码中读取 MBR 之前是否需要检查扇区大小?
通常单个扇区是您需要读取的最小块,因此最好知道它的大小,因为您需要分配一个缓冲区来存储这些数据。