Ich versuche, mit einigen USB-HID-Gerät zu arbeiten.
Ich habe proprietäre Software (vom Hersteller des Geräts), die mit dem Gerät interagieren kann. Aber ich muss meine eigene schreiben.
Mit Hilfe eines Sniffer-Tools habe ich Verkehr zwischen dem Host und dem Gerät gefangen. Dieses Werkzeug ist BusDog.
Dann konnte ich den gleichen Verkehr über WriteFile mit Gerät Handle reproduzieren, die ich von CreateFile erhalten (für den Pfad von Setupapi.dll APIs). Aber das Gerät reagiert nicht auf meine Befehle ("Anfragen", wie sie in USB/HID-Welt genannt werden).Wie genaue USB-HID-Gerät Interaktion von einer Software zu fangen und in meinem eigenen Code neu implementieren
Dann nahm ich ein anderes Tool - HHD Device Monitoring Studio. Dieses Tool zeigt nicht nur "Interrupt-Übertragung", sondern auch alle Arten von Übertragungen. Ich kann das folgende Protokoll sehen:
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
Meine Frage ist, wie diese Art Transfer in meinem eigenen Code neu zu implementieren? Und wie man dieses Zeug zu Parametern der passenden Funktion analysiert (ist das DeviceIoControl?)
p. Ich benutze C#, aber eigentlich spielt es keine Rolle, ich kann C/C++ verstehen.