www.mikrocontroller.net

Forum: PC-Programmierung WM_DEVICECHANGE bei Windows 7


Autor: Sam (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: René König (king)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sam (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: René König (king)
Datum:

Bewertung
0 lesenswert
nicht 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. :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.