哪种情况会被认为是正确的?
无论 LBA 是 32 位还是 64 位,都使用 Read 16 命令进行读取。
如果最大 LBA 为 32 位,则执行读取 10 命令,如果最大 LBA 为 64 位,则执行读取 16 命令。
每种选择的优缺点是什么?
我知道对于读取容量命令,运行 10 是正确的,如果它返回 FFFFFFFFh 然后运行 16。为什么会这样?读取容量 16 命令适用于这两种情况,甚至根本不需要读取容量 10。
哪种情况会被认为是正确的?
无论 LBA 是 32 位还是 64 位,都使用 Read 16 命令进行读取。
如果最大 LBA 为 32 位,则执行读取 10 命令,如果最大 LBA 为 64 位,则执行读取 16 命令。
每种选择的优缺点是什么?
我知道对于读取容量命令,运行 10 是正确的,如果它返回 FFFFFFFFh 然后运行 16。为什么会这样?读取容量 16 命令适用于这两种情况,甚至根本不需要读取容量 10。
请记住,在许多情况下,SCSI 具有多种“大小”命令的原因是因为 SCSI 是一种非常古老的协议。(它在 1986 年首次标准化,并且在那之前已经开发了一段时间!)当时,大型SCSI 设备的范围只有数百兆字节——即使是 32 位 LBA 在当时也被认为是多余的。64 位 LBA 命令直到很久以后才出现。
这里的问题实际上只是您是否要支持这些旧设备。如果这样做,则需要在“小型”设备上使用 Read (10) 进行读取,因为它们可能无法识别 Read (16)。同样,在读取容量 (16) 之前使用读取容量 (10) 是因为旧设备无法识别较大的版本。