哪种情况被认为是正确的?
无论LBA是32位还是64位,都使用Read 16命令进行读取。
如果最大LBA为32位,则执行Read 10命令;如果最大LBA为64位,则执行Read 16命令。
每种选择的利弊是什么?
我知道对于“读取容量”命令来说,运行10是正确的,如果返回FFFFFFFFh然后运行16,这是为什么?读取容量16命令在两种情况下均有效,甚至完全不需要读取容量10。
请记住,在许多情况下,SCSI之所以具有多个这样的命令“大小”,是因为SCSI是一个非常古老的协议。(它是1986年首次标准化的,在此之前已经开发了一段时间!)当时,大型 SCSI设备的范围可能低至几百兆字节-当时甚至认为32位LBA都过多。64位LBA命令只是直到很晚才存在。
这里的问题实际上只是您是否要支持这些旧设备。如果这样做,您将需要在“小型”设备上使用Read(10)进行读取,因为它们可能无法识别Read(16)。同样,在读取容量(16)之前使用读取容量(10)是因为较旧的设备无法识别较大的版本。