2013-05-29 51 views
0

我正在使用scsi readcapacity16命令。我想要的是獲得任何驅動器的最大LBA值,以便我可以對驅動器執行一些測試。我運行讀取容量命令並接收輸出。我不知道該怎麼做這個輸出,例如最大容量在哪裏,然後如何從輸出中獲取該值以便在程序中稍後使用。此外,我正在做這個視覺C++。下面是我所引用http://www.seagate.com/staticfiles/support/disc/manuals/scsi/100293068a.pdf查找SCSI硬盤的最大LBA

回答

2

如果你想這樣做正確的鏈接,然後SCSI命令的順序應該是調查,以確認你所談論到磁盤驅動器,然後測試單元就緒,以驗證它處於它將響應命令的狀態,然後讀取容量(10)。只有當驅動器對於讀取容量(10)來說太大時,才發送READ CAPACITY(16)。

READ CAPACITY(10)返回8個字節。第一4是最後的LBA(從0開始),其餘爲以字節爲單位(通常爲512)的塊大小。如果驅動器太大,LBA將爲-1。

READ CAPACITY(16)返回一個8字節LBA,4字節的塊大小,加上20個字節的東西可以忽略。

+0

需要注意的是SCSI參數是大端,所以你可以再用ntohl使用轉換領域舉辦秩序。 – stark

+0

所以後來如果我說:做一個readcap10(緩衝)和存儲那些前4個字節,這將使我最大LBA,那麼如果這些四個字節= -1做readcap16(緩衝)和存儲前8個字節?謝謝你的幫助! – diggers3