打印
[USB编程]

圈圈书籍第八章,U盘,如何更改U盘的容量大小

[复制链接]
1253|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
莉莉酱|  楼主 | 2017-8-7 17:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
圈圈的书籍中该数组被定义赋值为:
const uint8_t DiskCapacity[8]=
{
0x00,0x3f,0xff,0xff, //能够访问的最大逻辑块地址
0x00,0x00,0x02,0x00  //块的长度
//所以该磁盘的容量为
//(0x3FFFF+1)*0x200 = 0x8000000 = 128*1024*1024 = 128MB.
};

为何我更改为:
const uint8_t DiskCapacity[8]=
{
0x00,0xec,0xe0,0x00, //能够访问的最大逻辑块地址
0x00,0x00,0x02,0x00  //块的长度
//所以该磁盘的容量为
//(0xece000+1)*0x200 = 0x8000000 = 128*1024*1024 = 7580MB.
};
同时,最大格式化容量我也改为16G。
问题是:

枚举成功后,新出现的盘依然是为127M。
用BUS HOUND抓包,新的数组也发出去了。
是不是哪里还要做更改,我没发现???

相关帖子

沙发
zhs2007| | 2017-8-9 17:23 | 只看该作者
具体程序没见过,但与容量相关的有下面几个地方:
1. ReadCapacity
2. ReadFormatCapacities
3. MBR中的分区表(这个可以没有!)
4. FAT BPB中也有分区容量信息
后两个地方可以通过删除程序或WINHEX等工具擦除相关数据,然后格式化。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

14

帖子

0

粉丝