Setup API 関数とWMIを用いたハードディスク情報の抽出
Mc.N [著] 2006/03/29 12:00
このエントリーをはてなブックマークに追加

1 2 3 →

この記事では、Setup API関数およびWMIを用いてハードディスクの型番を取得する方法について考察します。ハードディスクの型番を取得すると、現在使用しているハードディスクの種類を判別できるため、そのハードディスクのパフォーマンスや評判を、インターネットなどを通じて容易に知ることができます。

完成図(cscript disk.vbsの実行結果)
[IDE] ST3250823A
[1394] Apple Computer_ Inc. iPod IEEE 1394 SBP2 Device
[SCSI] Maxtor 6 L250S0 SCSI Disk Device
[USB] HTS54802 0M9AT00 USB Device
[USB] IC25N040 ATMR04-0 USB Device

はじめに

 この記事では、Setup API関数およびWMIを用いてハードディスクの型番を取得する方法について考察しています。ハードディスクの型番を取得すると、現在使用しているハードディスクの種類を判別できるため、そのハードディスクのパフォーマンスや評判をインターネットなどを通じて容易に知ることができます。

 普段、意識することなく使用しているハードディスクですが、型番を知ることで多くの種類が存在することに気が付くのではないでしょうか。

対象読者

  • ハードディスクの動作、制御に興味がある方
  • Setup API(SetupDi関数)、WMIの使用方法に興味がある方

必要な環境

 C/C++に関してはVisual C++ version 6 SP6(MFC)で開発を行っています。C#に関してはVisual Studio 2005を使用していますが、今回はコンソールプログラムですのでPlatform SDKだけでも十分です。

 DDK(Device Driver Kit、Kernel構築用開発キット)があればなお良いですが無くても構いません。

 実行環境としてはWindows 2000/XPを想定しています。Setup API関数を使用する関係上、Windows 9x/NTは対象外とします。

ハードディスクを見分けよう

 まずは下記の「デバイスマネージャ」の情報を見てもらいたい([スタート]→[ファイル名を指定しての実行]を選択して、「devmgmt.msc」を入力し[OK]をクリックします)。

デバイスマネージャのディスクドライブの情報
デバイスマネージャのディスクドライブの情報

 「ディスクドライブ」の下に現在認識しているハードディスクの一覧が表示されています。ここで認識されるハードディスクは、次のとおりです。

  • IDE(ATA)
    多くのシステムで採用されているインターフェース(接続方式)です。ハードディスクの中では安価の部類に入り、速度も申し分ありません。欠点として、ケーブルが平べったいため接続しにくく欠落しやすいこと、既にデータ転送速度が限界まで達しておりこれ以上速度向上が望めないことが挙げられます。これらを改善するため、現在ではSerial ATAという新たな接続方式に切り替わり始めています。
    上記の例では「ST3250823A」がそれです。
  • Serial ATA(SATA)
    IDEの置き換えとして注目が集まっているインターフェースです。IDEの欠点を埋めるべく多くの改良が施されています。最近のシステムの多くはSerial ATA接続のハードディスクで出荷されています。
    上記の例では「Maxtor 6 L250S0 SCSI Disk Device」がそれです。
  • SCSI
    一般のシステムではほとんど見られなくなってしまったインターフェースです。以前は信頼性が重要視されるサーバー系で用いられていましたが、最近ではSCSIの置き換えとしてSASという接続方式が台頭しはじめています。物理的にはほぼ壊滅状態のSCSIディスクですが、規格自体は多くの接続方式に影響を与えています。
  • USB HDD
    USB接続の外付けハードディスクもここで認識されます。外見こそUSBですが、中身はIDEのハードディスクが入っていることが多いです。一般的にはUSB-ATA Bridgeチップを用いてIDEの制御情報をUSBの制御情報に変換しています。
    上記の例では「HTS54802 0M9AT00 USB Device」「UC25N040 ATMR04-0 USB Device」がそれです。
  • IEEE1394 HDD(SBP2)
    IEEE1394接続の外付けハードディスクもここで認識されます。これもUSBと同じく中身はIDEのハードディスクが入っていることが多いです。IEEE1394-ATA Bridgeチップを用いてIDEの制御情報をSBP2の制御情報に変換しています。
    上記の例では「Apple Computer_ Inc. iPod IEEE 1394 SBP2 Device」がそれです。ちなみに上記はiPod miniをIEEE1394接続しています。

 ここで注目してもらいたいのが文字列「ST3250823A」です。実はハードディスクの型番を示しています。この型番をインターネットで検索してみましょう。どうやらこのハードディスクはSeagate社製「Barracuda 7200.8」シリーズのようです(他のハードディスクと比べシーク音が小さく、そこそこのパフォーマンスをたたき出しているシリーズで、私のお気に入りです)。

 今回は、このようにハードディスクの型番を抽出してハードディスクの種類を見分けるのが目的です。

ハードディスクの型番情報を抽出しよう

 Windows 2000はサポートしていません。参考程度に目を通してください。
 

 さらに調査を続けます。

 デバイスマネージャの[ST3250823A]をダブルクリックし、[ST3250823Aのプロパティ]を表示します。プロパティ内の[詳細]タブを選択します。

ST3250823Aのプロパティ
ST3250823Aのプロパティ

 このダイアログの情報から、このハードディスクに関するさまざまな情報を抽出できます。「列挙子」の情報が「IDE」であることより、このハードディスクはATA/SATA接続であることが分かります。

 このハードディスク型番(ST3250823A)と列挙子(IDE)をWMI/Setup API関数を用いて抽出します。


1 2 3
→
INDEX
ハードディスク情報の抽出 1:ハードディスクの種類の判別
Page1
はじめに
対象読者
必要な環境
ハードディスクを見分けよう
ハードディスクの型番情報を抽出しよう
WMIによる抽出方法
SetupAPI関数による抽出方法
まとめ
参考資料
こちらの関連記事もおすすめです

プロフィール
Mc.N エムシイエヌ

SyncHack 管理人。


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト