MBR

MBR(Master Boot Record 的缩写),可以称为主引导记录或主引导扇区。计算机启动后,访问磁盘必须先访问这个 MBR,获取到这个磁盘的相关信息。MBR 是一个扇区,在磁盘的位置是(柱面,磁头,扇区) = (0,0,1),一般一个扇区是 512 个字节。MBR 的组成如下图:


MBR 由 3 部分组成:

第一部分:前 446 字节是一段程序。0 -- 0x1be

第二部分:64 字节(4 个 16 字节)。表示的是 4 个主分区的信息。每个主分区由 16 个字节描述,含义是:

   偏移    长度(字节) 意义
 00H 1 分区状态: 00--> 非活动分区; 80-->活动分区;
          其他数值没有意义
 01H 1 分区起始磁头号,用到全部8位
 02H 2 分区起始扇区号,占据02H的位0-5;
 该分区的起始磁柱号,占据02H的位6-7和03H的全部8位 
 04H  1 文件系统标志位
 05H 1 分区结束磁头号,用到全部8位
 06H 2 分区结束扇区号,占据06H的位0-5;
 该分区的起始磁柱号,占据06H的位6-7和07H的全部8位
 08H 4 分区起始相对扇区号
 0CH 4 分区总的扇区数
第三部分:2 个字节,签名信息。(内容是 0x55 0xaa),用来验证是否是标准的MBR。

如下图:



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
读写MBR的,不要乱试所电脑的 .版本 2 .支持库 spec 连续赋值 (“”, 编辑框2.内容, 编辑框3.内容, 编辑框4.内容) .如果真 (读取MBR (buffer)) 调试输出 (buffer) 字节集到十六进制 (MBR文本, buffer, “ ”) .如果真结束 MBR分割处理 = 分割文本 (MBR文本, “ ”, ) .计次循环首 (取数组成员数 (MBR分割处理), i) .如果真 (i ≤ 446) 编辑框2.内容 = 编辑框2.内容 + 到十六进制 (buffer [i]) + “ ” .如果真结束 .如果真 (447 ≤ i 且 i ≤ 510) 编辑框3.内容 = 编辑框3.内容 + 到十六进制 (buffer [i]) + “ ” .如果真结束 .如果真 (511 ≤ i 且 i ≤ 512) 编辑框4.内容 = 编辑框4.内容 + 到十六进制 (buffer [i]) + “ ” .如果真结束 .计次循环尾 () .子程序 十六进制到字节集, 字节集, 公开, 若参数一不为空,将返回空字节集 .参数 字节集变量, 字节集, 参考 可空, 用来保存转换后的字节集数据.若空,以返回值返回结果 .参数 十六进制文本, 文本型, 参考 .参数 分隔符号, 文本型, 可空, 默认分隔符号为 “,” .局部变量 计次, 整数型 .局部变量 文本, 文本型, , "0" .如果真 (是否为空 (分隔符号)) 分隔符号 = “,” .如果真结束 文本 = 分割文本 (十六进制文本, 分隔符号, ) .如果真 (0 = 取数组成员数 (文本)) 返回 ({ }) .如果真结束 字节集变量 = 取空白字节集 (取数组成员数 (文本)) 计次 = 1 .判断循环首 (计次 ≤ 取数组成员数 (文本)) 字节集变量 [计次] = 到十进制 (文本 [计次]) 计次 = 计次 + 1 .判断循环尾 () .如果真 (是否为空 (字节集变量)) 返回 (字节集变量) .如果真结束 返回 ({ }) .子程序 到十六进制, 文本型, 公开, 返回转换后的十六进制文本 .参数 十进制数据, 整数型, , 传入十进制整型数据 .局部变量 结果, 文本型 结果 = 取十六进制文本 (十进制数据) .如果真 (取文本长度 (结果) % 2 = 1) 返回 (“0” + 结果) .如果真结束 返回 (结果) .子程序 字节集到十六进制, 文本型, 公开, 若参数一不为空,将返回空文本 .参数 文本变量, 文本型, 参考 可空, 保存转换后的十六进制.若空,以返回值返回结果 .参数 字节集数据, 字节集, 参考 .参数 分隔符号, 文本型, 可空, 默认分隔符号为 “,” .局部变量 计次, 整数型 .如果真 (是否为空 (分隔符号)) 分隔符号 = “,” .如果真结束 .如果真 (0 = 取字节集长度 (字节集数据)) 返回 (“”) .如果真结束 文本变量 = “” 计次 = 1 .判断循环首 (计次 ≠ 取字节集长度 (字节集数据)) 文本变量 = 文本变量 + 到十六进制 (字节集数据 [计次]) + 分隔符号 计次 = 计次 + 1 .判断循环尾 () 文本变量 = 文本变量 + 到十六进制 (字节集数据 [计次]) .如果真 (是否为空 (文本变量)) 返回 (文本变量) .如果真结束 返回 (“”) .子程序 读取MBR, 逻辑型 .参数 Mbrbase, 字节集 .局部变量 device, 整数型 .局部变量 pdevicename, 文本型 .局部变量 count, 整数型 .局部变量 statue, 逻辑型 .局部变量 安全结构, _OVERLAPPED Mbrbase = 取空白字节集 (#MBE结构长度) pdevicename = “\\.\physicaldrive0” device = CreateFile (pdevicename, 到十进制 (“80000000”), 到十进制 (“00000001”), 0, 3, 0, 0) ' .如果真 (device = -1) 返回 (假) .如果真结束 SetFilePointer (device, 0, 0, 0) statue = ReadFile (device, Mbrbase, #MBE结构长度, count, 安全结构) CloseHandle (device) 返

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值