Heutzutage kommen immer mehr und mehr Geräte mit USB-Anschluss daher. Mittlerweile ist auch schon USB 3.0 mit Superspeed spezifiziert wobei Windows 7 noch keine Unterstützung von Haus aus mitbringt. Hier einige Infos zu USB 3.0 und Windows 7: http://www.usb.org/developers/presentations/pres1108/
SuperSpeed_USB_DevCon_Windows_USB_Update_GiustiAull.pdf
Was aber kann man machen wenn Geräte nicht erkannt werden oder nicht wie erwartet reagieren?
Eine Hilfe sind die neuen Log Möglichkeiten die in Windows Vista eingeführt wurden: http://blogs.msdn.com/wndp/archive/2006/03/28/wininet-etw-tracing-support-in-windows-vista.aspx
Mit dem Befehl logman.exe kann man quasi Mitschnitte von Ereignissen und Vorgängen erstellen lassen. Mit dem Befehl tracerpt.exe kann man die Datei dann z. B. in eine XML-Datei überspielen.
Eine bessere Variante ist aber mitterlweile mit dem Microsoft Network Monitor zu arbeiten, da dieser ETL-Dateien auch lesen und darstellen kann: http://blogs.technet.com/netmon/archive/2009/05/13/event-tracing-for-windows-and-network-monitor.aspx
Eine Auflistung was für Provider zur Verfügung stehen von denen Ereignisse verarbeitet werden können erhält man durch Eingabe von:
logman query provider
Übrigens kann man per logman auch die möglichen Provider eines Prozesses abfragen, somit kann man schneller entscheiden welche Provider bei einem aktuellen Problem überhaupt Sinn machen, z. B.:
logman query provider –pid 6431
Listet alle möglichen Provider auf die von dem Prozess mit der ID 6431 verwendet werden. Näheres erklärt: http://blogs.msdn.com/ntdebugging/archive/2009/09/08/exploring-and-decoding-etw-providers-using-event-log-channels.aspx
Um nun also USB Vorgänge aufzeichnen zu können gibt man folgenden Befehl ein:
logman start usbtrace –p Microsoft-Windows-USB-USBPort –o usbtrace.etl –ets
logman start usbtrace –p Microsoft-Windows-USB-USBHub –ets
Aber Vorsicht, da in der Regel heute die meisten Tastaturen und Mäuse ebenfalls per USB angeschlossen sind, bekommt man gleich mal eine Ladung an Daten nur wegen des Auslösevorgangs gesammelt!
Mittels
logman stop usbtrace –ets
wird der Vorgang dann abgeschlossen und man findet seine Daten in usbtrace.etl.
Was nun mittels Netmon herausgefunden werden kann, beschreibt dieser Artikel: http://blogs.msdn.com/usbcoreblog/archive/2009/12/21/answering-the-question-what-s-wrong-with-my-device-using-usb-etw.aspx
Primär wendet man einen USBHub Filter an, der einen auf einen Fehler bringt und von dort schaut man dann rückwärts und versucht das Problem zu finden.
Momentan ist alles noch recht mühsam, aber da die entsprechende Technik nun mittels Windows 7 voll zur Verfügung steht ist es sicherlich nur eine Frage der Zeit bis mehr und mehr Filter bzw. auch irgendwann Expertenmodule für Netmon entwickelt werden, die dann schnell weiterhelfen können.