Benutzer mit den meisten Antworten
Windows 10, usbser.sys, GetDefaultCommConfig liefert Fehler: 87 (falscher Parameter) und findet nur noch COM1

Frage
-
Seit Windows XP verwenden wir die Funktion GetDefaultCommConfig() um nach Geräten die sich per COM/virtueller COM-Schnittstelle melden.
Dies hat auch bisher erfolgreich funktioniert, nur bei Windows 10 geht es nicht mehr und die Funktion liefert den Fehler 87 zurück.
Dies scheint auch schon anderen Programmierern aufgefallen zu sein:
http://stackoverflow.com/questions/31482368/why-does-getdefaultcommconfig-fail-on-windows-10Laut Microsoft wurde der USBSER.SYS neu geschrieben und jetzt ist es doch verwunderlich, dass physikalische COM ports nach wie vor ohne Probleme abgefragt werden könne, aber USBSER.SYS COM Ports einen Fehler liefern.
Vielleicht hat jemand von Euch hierzu eine Idee?!
Hier mein Beispiel zur Funktion:
for (UINT iIdx = 1; iIdx < 256; iIdx++)
{
//Form the Raw device name
CString szPortName;
COMMCONFIG cc;
DWORD dwSize = sizeof(COMMCONFIG);
szPortName.Format(_T("COM%d"), iIdx);
if (GetDefaultCommConfig(szPortName, &cc, &dwSize))
{
........
}
}
Antworten
Alle Antworten
-
Hallo,
nicht das ich hier große Erfahrung hätte. Folgender Thread ist schon älter:
http://compgroups.net/comp.os.programmer.win32/getdefaultcommconfig-invalid-paramet/2830505Schau mal Der User- die Rechte als Ursache in Frage kommen. Ansonsten: Was für Geräte sind das?
Auch der hier ist schon älter: https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/e34b3f8d-502b-4807-bff2-bd82eebb39e9/getdefaultcommconfig-is-returning-error-87-errorinvalidparameter?forum=wdk
Grüße Alexander
-
Hallo Alexander,
danke für die Antwort.
Bei den Geräten handelt es sich um USB Geräte, die wir selbst produzieren.
An den User-Rechten sollte es nicht liegen, denn auch als Administrator bekommen wir den Fehler.Das Thema mit der "variablen Länge" muß ich noch untersuchen, vielleicht hat sich hier etwas geändert.
Aber was auffällig ist, das GetDefaultCommConfig() für die physikalischen COM Ports einen gültigen string (Länge 10 "COM1" zurückliefert.
Hingegen bei "virtuellen" COM Ports kommt ein String (z.B. Länge 8 "COM3ls") zurück und es sieht so aus als ob der String nicht korrekt abgeschlossen ist.Etwas ähnliches beschreiben auch andere Entwickler unter dem Link den ich oben angegeben hatte.
Sobald ich etwas mehr Infos habe werde ich die hier posten.
VG,
Robert -
Hallo,
ich habe jetzt ein paar Tests gemacht.
Und zwar mit alle den Tips wie sie in den vorherigen Threads beschrieben waren.- Setting dwSize parameter of the COMMCONFIG structure
- Using an lager buffer for the COMMCONFIG structure
- Running the application with administartor rigthsNichts davon hilft. GetDefaultCOommconfig() gibt für virtuelle COM Ports immer Fehler=87 zurück.
Was hilft ist den USBSER.SYS von Windows 10 gegen den von Windows 7 zu tauschen!
Nicht wirklich hilfreich für unsere Produkte aber einen Test war es wert.
Eigentlich bin ich mir immer sicherer das es sich hier um ein Problem in Windows 10 handelt. -
Mittlerweile habe ich dieses Problem auch in einen anderen Forum gepostet und dort auch eine Antwort erhalten.
Möglicherweise liegt es wohl doch an dem usbser.sys Treiber von Windows 10.siehe hier:
https://social.msdn.microsoft.com/Forums/en-US/3d759c8d-fb7e-4693-acf3-bb082f02fc1c/windows-10-getdefaultcommconfig-error-87-on-all-com-ports-handled-by-usbsersys?forum=wdk
- Bearbeitet Robert.My Montag, 4. Januar 2016 07:53
-
So wie es aussieht hat sich jetzt ein MS Mitarbeiter gemeldet und es ist wohl definitiv ein Problem im
usbser.sys Treiber:hier der Link zum entsprechenden Forumseintrag:
https://social.msdn.microsoft.com/Forums/en-US/3d759c8d-fb7e-4693-acf3-bb082f02fc1c/windows-10-getdefaultcommconfig-error-87-on-all-com-ports-handled-by-usbsersys?forum=wdk