USBのディスクリプタの取得

解決


ガムラン  2011-05-06 14:58:26  No: 72577  IP: 192.*.*.*

こんにちは。

USBのディスクリプタの取得を行ないたいのですが、色々なデバイスが接続されている中で、特定のデバイスのディスクリプタを取得するにはどうすればいいのでしょうか?

全ての中から、条件を元にプログラム内で検索して一つに特定するのでしょうか?
それとも、関数の引数に条件を指定することで、すぐに取得できるのでしょうか?

USBの初心者で、バカなことを聞いているかもしれませんが、教えてください。

編集 削除
tetrapod  2011-05-06 16:00:26  No: 72578  IP: 192.*.*.*

週明け会社行かないとソースが見られないので断言しにくいが:

デスクリプタっつってもいろんなデスクリプタがあるわけで、
ものによっては簡単に取得できるし、ものによっては難しい。
string descriptor くらいなら簡単。

> 全ての中から、条件を元にプログラム内で検索して一つに特定する
のが基本。

まずは WinDDK というか、今なら WDK を入手して USBView サンプルを見てみるべし。

http://msdn.microsoft.com/ja-jp/windows/hardware/gg487428
http://blogs.msdn.com/b/jpwdkblog/archive/2009/04/20/usbview-inside.aspx

編集 削除
ガムラン  2011-05-06 16:40:00  No: 72579  IP: 192.*.*.*

tetrapodさん、返信ありがとうございます。

取得したいのは、DEVICE DescriptorとString Descriptor(iProduct String Descriptorと書いてありました。)です。

USBViewのサンプルは見てみました。
それを見て、「全ての中から条件を元にプログラム内で検索する方法」があることはわかりましたが、その「条件」をどこから取得するのかがわからないのです・・・。

申し訳ありません。

編集 削除
tetrapod  2011-05-06 18:25:03  No: 72580  IP: 192.*.*.*

「条件」ってのは仕様というか案件というか、で決まるものなはずだが?
俺たち部外者が判断する代物ではないと思うけど。

「特定のデバイス」を特定する条件=案件(仕様)、で絞るわけだ。
USB の仕様書 (USB specification 2.0 / 3.0) は入手したの?
英文仕様書だけでは理解がしづらいというなら邦文参考書は?
俺が使ったのは USB complete 第3版(+仕様書原文が必須だと思う)
http://www.amazon.co.jp/dp/4434084607/

たとえば、特定するとは
「マウスである」
「一般的な記憶装置である」(フラッシュメモリまたはハードディスク)
「特定のハードディスク装置である」(フラッシュメモリは除くの意味)
「◎◎社の▲▲装置である」
ってことになるわけだろう。
その手の判断なら USB 仕様書に載ってる。そのとおりに実装するだけ。

編集 削除
ガムラン  2011-05-09 06:41:50  No: 72581  IP: 192.*.*.*

tetrapodさん

返信ありがとうございます。
USBの仕様書については、まだ入手していません。
tetrapodさんのを元に探してみます。

編集 削除
tetrapod  2011-05-09 15:55:09  No: 72582  IP: 192.*.*.*

まあ仕様書は厳密に仕様書であって、ソフト担当者には不必要な内容も盛りだくさん。
USB って何ぞや?を知るのに最初に読み解くべき文書であるとは思えない。
USB complete なり、検索で引っかかるテキトーな解説ページなりから入るといいかも。

とにかく最低限、 USB 関連の語彙(語句)は混乱無く使えるようにならないと
質疑応答もままならないし、まずはその辺から。
(分量的に、掲示板での用語解説ってのは困難だろうし)

なんとなく妄想するに[特定デバイス]とは VID/PID の特定ペアなのかなーとか。
いずれにせよ「仕様」を確定するのはそっちの仕事。
「仕様」を実装する上での疑問点などあればお手伝いはできるかも知れない。

編集 削除
ガムラン  2011-05-20 11:36:44  No: 72583  IP: 192.*.*.*

tetrapodさん

USBViewのソースをチマチマ移植し、何とか期待の結果を得られるようになりました。
ありがとうございました。

編集 削除