私はいくつかの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++を理解できます。