none
Windows 10, usbser.sys, GetDefaultCommConfig liefert Fehler: 87 (falscher Parameter) und findet nur noch COM1 RRS feed

  • 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-10

    Laut 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))
        {
          ........
        }
      }


    Freitag, 4. Dezember 2015 14:48

Antworten

  • Windows 10 Update available

    => KB3124262 fixes the problem (issued 27.01.2016)
    (Windows Update Build 10586.71)

    Thanks to ALL,
    Robert
    • Als Antwort markiert Robert.My Mittwoch, 10. Februar 2016 10:32
    Mittwoch, 10. Februar 2016 10:32

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/2830505

    Schau 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

    Freitag, 4. Dezember 2015 18:07
  • 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

    Dienstag, 8. Dezember 2015 16:09
  • 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 rigths

    Nichts 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.

    Mittwoch, 9. Dezember 2015 16:47
  • 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
    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

    • Als Antwort markiert Robert.My Dienstag, 5. Januar 2016 11:39
    • Tag als Antwort aufgehoben Robert.My Mittwoch, 10. Februar 2016 10:32
    Dienstag, 5. Januar 2016 11:23
  • Windows 10 Update available

    => KB3124262 fixes the problem (issued 27.01.2016)
    (Windows Update Build 10586.71)

    Thanks to ALL,
    Robert
    • Als Antwort markiert Robert.My Mittwoch, 10. Februar 2016 10:32
    Mittwoch, 10. Februar 2016 10:32