Zitat von
nicodex:
Wenn der Name in der DEV_BROADCAST_PORT-Struktur nicht eindeutig ist (bzw. keine Möglichkeit bietet, von diesem auf das Gerät zu schließen) und keine andere Lösung findest, dann würdest du eine Liste mit den bekannten Geräten pflegen müssen (unschön).
Ich fürchte fast, dass da kein Weg dran vorbei führt, sowohl beim Programmstart diese Liste einzulesen als auch bei einem DBT_DEVICEARRIVAL jedes Mal die Liste neu einzulesen und mit den in der Liste bereits vorhandenen Geräten zu vergleichen.
Im Prinzip möchte ich ja nur die VID&PID des gerade angesteckten Geräts auslesen und hatte mich deswegen auch schon mit der
MAGWMI beschäftigt.
Da es sich ja wie geschrieben bei meinem Gerät um ein USB-Gerät handelt, was via virtuellem
COM-Port Treiber mit dem PC verbunden wird, hatte ich die MAG-Lib um den Eintrag 'Win32_SerialPort' aufgebohrt. Damit bekomme ich zwar beim Programmstart schön eine Liste alle über die
COM-Ports angeschlossenen Geräte nebst VID&PID, wenn aber der DBT_DEVICEARRIVAL vorbei kommt und ich erneut versuche, via 'Win32_SerialPort' die Liste einzulesen, kommt die folgende
Exception:
Ein ausgehender Aufruf kann nicht ausgeführt werden, da die Anwendung einen Eingabe-synchronisierten Aufruf weiterleitet.
Die Erklärung zur
Exception findet sich
hier von Andreas Kosch.
Wo anders fand ich noch den Hinweis, vor der Anfrage eine InSendMessage-Abfrage zu starten. Liefert diese true, kann ich nicht abfragen. Und das ist bei mir leider immer so bei einem DBT_DEVICEARRIVAL.
Gruß, Carsten