IOKit を調べてDADiskCopyDescription
列挙しましたが、どちらも USB ハード ドライブのシリアル番号を教えてくれませんでした。IOUSBDevice
後者は、ハード ドライブのシリアル番号とは異なる USB シリアル番号を提供します。どうすればそれを取得できますか(シェル経由ではなく、c/c++で)?
1579 次
1 に答える
5
基本的に質問しているのは、「USB経由でハードドライブと直接通信するにはどうすればよいですか?」ということです。
答えは: USB コントローラに依存します。すべてのコントローラがリクエストをサポートしているわけではありません。
次の条件が存在する必要があります。
- USB ブリッジは ATA パススルーをサポートする必要があります (ATA の場合)
- ホスト OS で SCSI がサポートされている必要があります。
- OS は SCSI パススルー API を提供する必要があります (Windows および Linux でははい、MacOS X ではいいえ)
別の要因が発生します。一部のコントローラーはドライブの製造元に依存しないパススルーをサポートしていますが、一部のコントローラーは制御しているハード ドライブに基づいて異なるコマンドをサポートしています。これは、接続されているドライブが PATA、SATA/SAS、または SCSI のいずれであるかによっても異なります。
上記の少なくとも 1 つをサポートするコントローラーの例には、Sunplus SPIF215/6、SPIF225/6 が含まれます。JMicron JM20329、JM20335-39; およびサイプレス CY7C68300B/C (AT2LP)、CY7C68310 (ISD-300LP)。
あなたにとってもっと嬉しい知らせがあればいいのに。
于 2013-06-02T18:43:04.677 に答える