つい集めてしまうものはなんですか?

タイトルの通り、ドライブ文字からハードウェア名(Win32_DiskDriveのCaptionで取得できるSAMSUNG HD103UJ ATA Deviceのような文字列)を取得する方法はないでしょうか?
CD-ROMデバイスならWin32_CDRomDriveのDriveでドライブ文字が、Captionでハードウェア名が取得できるので対応付けができるのですが、ハードディスクやUSBメモリは対応付けができなくて困ってます。

QueryDosDeviceでドライブ文字から作成される文字列とsetupapiのSetupDiGetDeviceRegistryProperty(SPDRP_PHYSICAL_DEVICE_OBJECT_NAME)で取得される文字列を比較してデバイスを特定する方法も試してみたのですが、SetupDiGetDeviceRegistryPropertyではハードウェア名(フレンドリー名?)が取得できないようでした。

他にもGetVolumeNameForVolumeMountPointで取得したGUIDをレジストリで強引に検索して
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\CPC\Volume\{GUID}\Data内のデータからWMIでハードウェア特定に使えないかと考えたりしましたが、フォーマットも分からず万能ではなさそうでした。

どなたか、ドライブ文字からハードウェア名を取得する方法をご存じでしたら教えてください。
よろしくお願いします。

A 回答 (1件)

 こんにちは。



 サイトにソースが掲載されていました。参考になるかもしれません。

 「UsefullCode.net」HDDのシリアル番号や型番などを取得する(しかしWin9x用です)
 http://www.usefullcode.net/2007/02/hdd.html

 「UsefullCode.net」DeviceIOControl()API
 http://www.usefullcode.net/mt-search.cgi?tag=Dev …

 「Windows DDK」(此れをインストールする)
 http://www.usefullcode.net/2006/12/ddk.html
 
 winddk\3790.1830\src\storage\tools\spti の中にあるサンプルコードが参考になりそうです。
    • good
    • 0
この回答へのお礼

ご連絡が遅れてすいませんでした。
参考サイトの
http://www.usefullcode.net/2007/02/if.html
ここを参考にして、やりたかったことができました。
ディスクの情報取得なら、DeviceIOControlの方が便利そうですね。
回答ありがとうございました。

お礼日時:2008/11/01 22:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報