2010-11-28 15 views
1

OS Xシステム上の物理ストレージデバイスのリストを取得する必要があります。 kIOStorageClassキーを使用するIOServiceGetMatchingServicesは、すべてのハードウェアストレージデバイスではなく、すべてのボリュームのリストを表示します。これはどうすればいいですか?IOServiceGetMatchingServicesを使用したOS Xストレージデバイスリストの取得

+0

ボリュームではないストレージデバイスとは何ですか、アンマウントされたストレージも探していますか?ブロックデバイスなど... –

答えて

0

質問は少しあいまいです(あなたが全体のドライブ、パーティション、上記のすべてをしたいですか?)、私はIORegistryExplorerユーティリティ(XCodeを付属しています)を構成発射し、対象となるデバイスのクラスを考え出す示唆しています。私は、それぞれのドライブは通常IOBlockStorageDriverに対応しているので、あなたがマッチさせたいと思うクラスかもしれません。次に、デバイス全体を表すIOMediaクライアントがあります。これにはパーティション・スキーム・クライアントがあります。パーティション・スキーム・クライアントはパーティション化されていない限り、各パーティションにクライアントIOMediaを持っています。

0

物理ストレージデバイスのリストを取得するには、kIOATABlockStorageDeviceClassと一致させることができます。次のコードはブロック記憶装置のイテレータを取得します。

IOReturn  error  = kIOReturnSuccess; 
io_iterator_t iter  = MACH_PORT_NULL; 
error = IOServiceGetMatchingServices ( kIOMasterPortDefault, 
             IOServiceMatching (kIOATABlockStorageDeviceClass), 
             &iter); 
関連する問題