2017-10-20 85 views
0

我使用libusb库中的示例文件xusb.c与闪存驱动器进行通信,并通过设置字节2-5来修改test_mass_storage函数中的读取(10)的命令描述符块,以设置逻辑块地址参数。但是,我得到一个奇怪的结果与返回的扇区/块地址,具有:使用xusb.c示例代码在libusb中遇到逻辑块地址的偏移量?

cdb[2] = 0x00; 
cdb[3] = 0x00; 
cdb[4] = 0x00; 
cdb[5] = 0x61; 

返回磁盘的扇区/块地址1,0X62是扇区2等的文档中没有什么我能找到建议应该有0x60或96的偏移量。那么这个设备是否具体,代码中有错误还是规范中的错误?

read(10) structure

+0

大多数USB块设备都包含分区表。您可能将0x60块作为第一个分区的偏移量。 –

+0

这很有道理,谢谢。所以如果我用不同的软件重新格式化,第一个分区的偏移量可能会发生变化? –

+0

大多数工具在格式化时不会更改分区,但是YMMV。 –

回答

0

如今,我钻研了FAT32文件系统,这个问题变得很明显。我使用HxD作为逻辑磁盘打开驱动器,我使用它作为与xusb.c输出比较的方法。这在卷的开始处开始扇区计数,而不是物理驱动器的开始。在物理磁盘选项卡下打开驱动器解决了问题。