開発環境
WindowsXP Professional SP3 日本語
Visual C++ 6.0 SP6 日本語 API
Windows 2000 DDK
Platform SDK 2003
早速、教えていただきたいのですが、
USBメモリなどのUSBデバイスのデバイスインスタンスIDを
取得したいのですがどのようにしたら良いでしょうか。
SetupDiGetDeviceInstanceId()を使用するということは
わかったのですが、引数に設定する値を
どうすればよいのかわかりません。
よろしくお願いいたします。
ブヒブヒ
http://support.microsoft.com/kb/259695/ja
上記サンプルで SetupDiGetDeviceRegistryProperty を
呼んでいる部分を SetupDiGetDeviceInstanceId に置き換えてみると
列挙できました。
subaru 様、ありがとうございます。
デバイスインスタンスIDを列挙することが出来ました。
教えていただいたサンプルに
下記の変更を加えて実行できました。
ヘッダーインクルードの下に追加
#pragma comment( lib, setupapi.lib )
サンプル50行目あたり、
SetupDiGetDeviceRegistryPropertyを
SetupDiGetDeviceInstanceIdに変更
/*
while (!SetupDiGetDeviceRegistryProperty(
hDevInfo,
&DeviceInfoData,
SPDRP_DEVICEDESC,
&DataT,
(PBYTE)buffer,
buffersize,
&buffersize))
*/
while (!SetupDiGetDeviceInstanceId(
hDevInfo,
&DeviceInfoData,
(char*)buffer,
buffersize,
&buffersize))
サンプル65行目あたり、キャストのエラーが出たので(char*)を追加
/*
buffer = LocalAlloc(LPTR,buffersize * 2);
*/
buffer = (char*)LocalAlloc(LPTR,buffersize * 2);
以上
ドライブレター(F:\\)を指定して
指定したデバイスインスタンスIDの取得
が目標なので、試行錯誤していきたいと思います。
本当にありがとうございました。
助かりました。
今後もよろしくお願いいたします。
ヘッポコプログラマ@ブヒブヒ
>ドライブレター(F:\\)を指定して
>指定したデバイスインスタンスIDの取得
ドライブ名からデバイス情報を取得する(DEVINST系)
http://www.usefullcode.net/2007/02/devinst.html
ドライブ名からデバイス情報を取得する
http://www.usefullcode.net/2007/02/post_48.html
こんな感じでどうでしょう。(未確認です)
#依存環境:ATLとなっているので少し修正する必要があるかも
#しれません
もに 様、ありがとうございます。
教えていただいた「Usefullcode.net」は
非常に興味深い内容となっておりました。
しかもプロジェクトをダウンロードできるのですね。
しかし、ATLを知らないので少々時間が掛かりそうです。
#知らないことばかりでお恥ずかしい。
ありがとうございました。
ヘッポコプログラマ@ブヒブヒ
私は別件でたどり着いたのですが
リンク先をみて心が踊りました。
私もATLについては無知ですが
このページを見て目的の事は達成できました。
もっと勉強しなくてはいけないと思う所です。
お役に立てれば何よりです。