以下のリンクより USB で接続されたディスク情報のみを取得するようなサンプルを掲載したのですが、罠が潜んでいると悪友が教えてくれました。ここでは、その罠について掲載しています(もったいぶってみる)。
スポンサーリンク
[ InterfaceType ] USB 接続なのに SCSI だと?
最近の 外付けハードディスクなどは、USB 上で転送スピードの速い SCSI を使用したりすることもできるようになっています。転送スピードも上がりますので、素晴らしいことですが問題もあります。
なんと、Win32_DiskDrive.Interface の値までも 「USB」 から 「SCSI」 に変わってしまいます。もちろん PC の USB が対応していなければ USB のままなのですが、最近のパソコンはほとんど対応しているような気もします。
困りました。これでは USB で接続されたディスク情報のみを取得することができません。
Win32_DiskDrive.MediaType を利用する
仕方がないのでテリーマンに助けを求めようとしましたが、世の中甘くありません。そこで、何かしら手掛かりがないかと探してみたところ、MediaType が利用できそうなことがわかりました。
MediaType は次のような値が取得できます(すべてではないと思いますので、注意が必要)。
ディスクの種類 | MediaType の値 |
---|---|
固定ハードディスク | Fixed hard disk media |
外付けハードディスク | External hard disk media |
リムーバルメディア | Removable Media |
例えば、USB 上で SCSI 対応の外付けHDDは、
InterfaceType : SCSI
MediaType : External hard disk media
のように取得できます。
そもそも、このようなデバイスの場合は、「InterfaceType は USB があってるんじゃないか?」と思う今日この頃です。