2010-12-20 5 views
3

私はいくつかのUSB HIDデバイスで作業しようとしています。
私は、デバイスとやりとりすることができる(デバイスのベンダーからの)独自のソフトウェアを持っています。しかし、私は自分自身を書く必要があります。
スニファツールの助けを借りて、私はホストとデバイスの間のトラフィックを捕まえました。このツールはBusDogです。
次に、CreateFile(setupapi.dll APIから得たパス用)から取得したデバイスのハンドルを使用して、同じトラフィックをWriteFile経由で再現することができました。 しかし、デバイスは自分のコマンドで反応しません(USB/HID環境で呼び出されるような "要求")。ソフトウェアから正確なUSB-HIDデバイスのやりとりを見つけて、自分のコードで再実装する方法

次に、別のツール、HHD Device Monitoring Studioを使用しました。 このツールは、「割り込み転送」だけでなく、あらゆる種類の転送も表示します。 私は、次のログを見ることができます:

 
008852: Class-Specific Request (DOWN), 20.12.2010 18:58:10.242 +0.031 
Destination: Interface, Index 0 
Reserved Bits: 34 
Request: 0x9 
Value: 0x30d 
Send 0x8 bytes to the device 

0D 01 01 00 00 00 00 00       ........ 
008853: Control Transfer (UP), 20.12.2010 18:58:10.242 +0.0. Status: 0x00000000 
Pipe Handle: 0x8638c5c8 

0D 01 01 00 00 00 00 00       ........ 
Setup Packet 
21 09 0D 03 00 00 08 00       !....... 
Recipient: Interface 
Request Type: Class 
Direction: Host->Device 
Request: 0x9 (Unknown) 
Value: 0x30d 
Index: 0x0 
Length: 0x8 

私の質問は、私自身のコードでこの種の転送を再実装する方法ですか?どのように適切な機能のパラメータにこのものを解析する(DeviceIoControlですか?)

p.s.私はC#を使用していますが、実際にはそれほど重要ではありません。私はC/C++を理解できます。

答えて

0

詳しくは、answerのこの概要をご覧ください。しかし、私はいくつかの要点を要約します。

まず、デバイスのベンダーIDと製品IDを確認する必要があります。 (これらはユニークです)デバイスとの通信のプロセスは簡単です。接続されているデバイスを列挙し、探しているIDと一致するデバイスを選択してからlibusbのようなライブラリを使用してデバイスとの間で読み書きを行います。リンク先のスタックの答えの一番下に詳細な例があります。

関連する問題