我正在使用 libusb 库中的示例文件 xusb.c 与闪存驱动器通信,并通过设置字节 2-5 来修改 test_mass_storage 函数中 read(10) 的命令描述符 block 以设置逻辑 block 地址参数。但是,我在返回的扇区/ block 地址中得到了一个奇怪的结果,其中:
cdb[2] = 0x00;
cdb[3] = 0x00;
cdb[4] = 0x00;
cdb[5] = 0x61;
返回磁盘的扇区/ block 地址 1,0x62 是扇区 2,等等。我能找到的文档中没有任何内容表明应该有 0x60 或 96 的偏移量..所以这个设备是特定的,代码中的错误,或规范中的某些内容?
最佳答案
现在我正在深入研究 fat32 文件系统,问题变得显而易见。我使用 HxD 将驱动器作为逻辑磁盘打开,我将其用作与 xusb.c 输出进行比较的方法。这会在卷的开头而不是物理驱动器的开头开始扇区计数。在“物理磁盘”选项卡下打开驱动器解决了该问题。
关于c - 使用 xusb.c 示例代码遇到 libusb 中逻辑 block 地址的偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46841615/