Forum: PC-Programmierung WM_DEVICECHANGE bei Windows 7


von Sam (Gast)


Lesenswert?

Hallo,

Ich nutze Visual C+ 2008 Express und habe das Problem, dass bei meiner 
Software die WM_DEVICECHANGE-Nachrichten für ein HID-Gerät unter Windows 
7 nicht ankommen. Mit Windows XP und Vista funktioniert es einwandfrei.
Ich habe die Anwendung jeweils komplett unter dem entsprechenden 
Betriebssystem neu kompiliert.

Kann mir da jemand weiterhelfen?

Gruß Sam

von René K. (king)


Lesenswert?

Hier funktioniert das auch unter Windows 7. Ich nehme an, dass Du bei 
Registrieren noch irgendetwas falsch machst. Bekommst Du denn überhaupt 
ein gültiges Handle (<- HDEVNOTIFY) geliefert?

von Sam (Gast)


Lesenswert?

Hallo Rene,

ich war etwas voreilig.

Der Fehler (wenn's denn einer war) lag daran, dass die Struktur 
PDEV_BROADCAST_DEVICEINTERFACE für dbcc_name (hier steht die GUID) unter 
Windows 7 alles als Upper-Case zurück gibt und XP/Vista als Lower-Case. 
Wenn ich also mit strstr() PID/VID/INTF vergleiche, dann kann er ja 
nichts finden. Ich habe das jetzt mit ... if (isupper()) .. tolower() 
... gleichgeschaltet.

Die Frage bleibt: Warum einmal Upper- und einmal Lower-Case? Liegt das 
an den Projekteinstelungen von VC++ (ich teste momentan für XP/Vista 
bzw. Windows 7 auf zwei verschiedenen Rechnern mit zwei verschiedenen 
Projekten)?

Gruß Sam

von René K. (king)


Lesenswert?

Sam schrieb:
> Die Frage bleibt: Warum einmal Upper- und einmal Lower-Case? Liegt das

Das ist eine gute Frage, darauf bin ich auch schon mal hereingefallen. 
Ich hatte hier auf ein und dem selben Rechner mal die eine, mal die 
andere Variante. Das aber auch schon unter W2K und XP.

Um aber nur VID, PID und Version zu prüfen, würde ich den String nicht 
anfassen. Öffne das Gerät mit CreateFile und rufe dann 
HidD_GetAttributes auf. Damit wäre dieses Problem auch gar nicht erst 
aufgetaucht. :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.