构造一个简单的MBR分区表

本文介绍了如何构建一个简单的MBR分区表,包括分区数量限制、分区起始扇区计算、4K对齐、预留扇区、分区间隙等关键点。讨论了活动分区与分区类型的意义,并指出分区表的最后两个字节必须设为0x55,0xAA以确保BIOS识别。" 41210625,4885913,使用CGContextRef在iOS中绘制图形教程,"['iOS开发', '图形编程', 'Quartz 2D', '视图绘制']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇文章讲述了MBR分区表的分析过程,这篇我们开始讲一下如何构造一个MBR分区表。


首先从最简单的没有扩展分区的分区表开始构建:



typedef struct tagMBR_PTITEM
{
/*00*/	UCHAR	byState;				//分区状态, 0 = 未激活, 0x80 = 激活 
/*01*/	UCHAR	byBeginHead;			//分区起始磁头号
/*02*/	USHORT	wBeginSC;				//分区起始扇区和柱面号, 底字节的低6位为扇区号, 高2位为柱面号的第 9,10 位, 高字节为柱面号的低 8 位
/*04*/	UCHAR	byFSID;					//分区类型, 如 0x0B = FAT32, 0x83 = Linux 等, 00 表示此项未用
/*05*/	UCHAR	byEndHead;				//分区结束磁头号
/*06*/	USHORT	wEndSC;					//分区结束扇区和柱面号
/*08*/	ULONG	dwBeginSector;			//在线性寻址方式下的分区相对扇区地址
/*012*/	ULONG	dwSectors;				//分区大小 (总扇区数)
/*16*/
} MBR_PTITEM,FAR * LPMBR_PTITEM;		//磁盘的分区信息


#define GETSC_C(SC) ((((SC) & 0xc0) << 2) + ((SC) & 0xff)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值