首页
社区
课程
招聘
剩余扇区
发表于: 2012-10-19 12:04 3435

剩余扇区

2012-10-19 12:04
3435
WinHex里面的剩余扇区是怎么计算出来的啊?
	for (int n = 0; n < 4; n++)
	{	
		printf("First: %x\n", *(DWORD *)((BYTE *)PartitionTable + 0x1BE + n*16 + 8));
		printf("Second: %x\n", *(DWORD *)((BYTE *)PartitionTable + 0x1BE + n*16 + 12));
		if (FreeSector < *(DWORD *)((BYTE *)PartitionTable + 0x1BE + n*16 + 8) + *(DWORD *)((BYTE *)PartitionTable + 0x1BE + n*16 + 12))
			FreeSector = *(DWORD *)((BYTE *)PartitionTable + 0x1BE + n*16 + 8) + *(DWORD *)((BYTE *)PartitionTable + 0x1BE + n*16 + 12);

	}

最后*=512
可是如果删除了一个分区  就坑爹掉了  直接跑到删除分区的开始了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
1.使用CreateFileA打开PhysicalDrive0设备
2.向设备发送IOCTL_DISK_GET_LENGTH_INFO得到磁盘大小
3.向设备发送 IOCTL_DISK_GET_DRIVE_GEOMETRY ,得到磁盘的CHS信息
4.两个结果一减就是剩余扇区长度~
IoCtl法不用考虑DPT里分区信息的变化
2012-10-19 12:21
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢  我用你的办法计算出来了  而且删除一个分区后也可以正确算出

能请教下用asm怎么计算么?
2012-10-20 01:09
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
也可以说是怎么在MBR中计算
2012-10-20 04:14
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
没有人来回答下么?
2012-10-22 19:07
0
雪    币: 309
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
都不给分.....谁解答
2012-10-22 19:13
0
游客
登录 | 注册 方可回帖
返回
//