4

哪种情况会被认为是正确的?

  1. 无论 LBA 是 32 位还是 64 位,都使用 Read 16 命令进行读取。

  2. 如果最大 LBA 为 32 位,则执行读取 10 命令,如果最大 LBA 为 64 位,则执行读取 16 命令。

每种选择的优缺点是什么?

我知道对于读取容量命令,运行 10 是正确的,如果它返回 FFFFFFFFh 然后运行 ​​16。为什么会这样?读取容量 16 命令适用于这两种情况,甚至根本不需要读取容量 10。

4

1 回答 1

5

请记住,在许多情况下,SCSI 具有多种“大小”命令的原因是因为 SCSI 是一种非常古老的协议。(它在 1986 年首次标准化,并且在那之前已经开发了一段时间!)当时,大型SCSI 设备的范围只有数百兆字节——即使是 32 位 LBA 在当时也被认为是多余的。64 位 LBA 命令直到很久以后才出现。

这里的问题实际上只是您是否要支持这些旧设备。如果这样做,则需要在“小型”设备上使用 Read (10) 进行读取,因为它们可能无法识别 Read (16)。同样,在读取容量 (16) 之前使用读取容量 (10) 是因为旧设备无法识别较大的版本。

于 2014-09-10T18:45:16.903 回答