c - 使用 xusb.c 示例代码遇到 libusb 中逻辑 block 地址的偏移量?

标签 c usb libusb

我正在使用 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 的偏移量..所以这个设备是特定的,代码中的错误,或规范中的某些内容?

read(10) structure

最佳答案

现在我正在深入研究 fat32 文件系统,问题变得显而易见。我使用 HxD 将驱动器作为逻辑磁盘打开,我将其用作与 xusb.c 输出进行比较的方法。这会在卷的开头而不是物理驱动器的开头开始扇区计数。在“物理磁盘”选项卡下打开驱动器解决了该问题。

关于c - 使用 xusb.c 示例代码遇到 libusb 中逻辑 block 地址的偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46841615/

相关文章:

c - C 程序中常量错误之前缺少语法错误

utf-8 - 为什么 USB 对字符串使用 UTF-16(为什么不使用 UTF-8)

c - 在 C (Windows) 中使用 USB

linux - 为什么使用 libusb 需要分离内核驱动程序?

usb - 逆向工程游戏 Controller 时没有 USB 流量

c - libusb 无法在 Windows 上打开 CDC 设备,但可以在 Linux 上打开

同时在两个无限循环中创建多个线程

c - 为什么在这种情况下 ptr + 1 与++ptr 不同?

c++ - 分析底层 Linux 操作系统功能/代码,如 select() 和 poll()?

java - Android:如何管理永久后台任务?