USB機器のデバイスインスタンスIDの取得方法 – プログラミング – Home

USB機器のデバイスインスタンスIDの...
 
通知
すべてクリア

[解決済] USB機器のデバイスインスタンスIDの取得方法


ブヒブヒ
 ブヒブヒ
(@ブヒブヒ)
ゲスト
結合: 15年前
投稿: 26
Topic starter  

開発環境
WindowsXP Professional SP3 日本語
Visual C++ 6.0 SP6 日本語 API
Windows 2000 DDK
Platform SDK 2003

早速、教えていただきたいのですが、
USBメモリなどのUSBデバイスのデバイスインスタンスIDを
取得したいのですがどのようにしたら良いでしょうか。

SetupDiGetDeviceInstanceId()を使用するということは
わかったのですが、引数に設定する値を
どうすればよいのかわかりません。

よろしくお願いいたします。
ブヒブヒ


引用未解決
トピックタグ
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

http://support.microsoft.com/kb/259695/ja

上記サンプルで SetupDiGetDeviceRegistryProperty を
呼んでいる部分を SetupDiGetDeviceInstanceId に置き換えてみると
列挙できました。


返信引用
ブヒブヒ
 ブヒブヒ
(@ブヒブヒ)
ゲスト
結合: 15年前
投稿: 26
Topic starter  

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の取得
が目標なので、試行錯誤していきたいと思います。

本当にありがとうございました。
助かりました。
今後もよろしくお願いいたします。
ヘッポコプログラマ@ブヒブヒ


返信引用
もに
 もに
(@もに)
ゲスト
結合: 15年前
投稿: 7
 

>ドライブレター(F:\\)を指定して
>指定したデバイスインスタンスIDの取得

ドライブ名からデバイス情報を取得する(DEVINST系)
http://www.usefullcode.net/2007/02/devinst.html
ドライブ名からデバイス情報を取得する
http://www.usefullcode.net/2007/02/post_48.html

こんな感じでどうでしょう。(未確認です)

#依存環境:ATLとなっているので少し修正する必要があるかも
#しれません


返信引用
ブヒブヒ
 ブヒブヒ
(@ブヒブヒ)
ゲスト
結合: 15年前
投稿: 26
Topic starter  

もに 様、ありがとうございます。

教えていただいた「Usefullcode.net」は
非常に興味深い内容となっておりました。
しかもプロジェクトをダウンロードできるのですね。

しかし、ATLを知らないので少々時間が掛かりそうです。
#知らないことばかりでお恥ずかしい。

ありがとうございました。
ヘッポコプログラマ@ブヒブヒ


返信引用
もに
 もに
(@もに)
ゲスト
結合: 15年前
投稿: 7
 

私は別件でたどり着いたのですが
リンク先をみて心が踊りました。

私もATLについては無知ですが
このページを見て目的の事は達成できました。
もっと勉強しなくてはいけないと思う所です。

お役に立てれば何よりです。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました