COM > 10: CreateFile schlägt fehl



  • Ich weiß ich weiß, das Problem ist bekannt und die Lösung angeblich auch:

    Anstatt

    CreateFile("COM10", ...
    

    soll es bei Ports >= 10

    CreateFile("\\\\.\\COM10", ...
    

    sein.

    Trotzdem erhalte ich denselben Fehler. Die Schnittstelle an sich geht aber, habe vorher immer mit den Ports 1-9 gearbeitet.

    Ist das irgendein Unicode Problem? Hab schon versucht, mit Unicode und dann

    CreateFile(L"\\\\.\\COM10", ...
    

    aber dann bekomme ich überall Compilerfehler mit irgendwelchen LPCSTR die ich nicht gefixt bekomme.

    Daher die Frage: Braucht CreateFile Unicode? Falls nein, was könnte sonst der Fehler sein



  • Wenn du L"..." verwendest, dann musst du CreateFileW verwenden statt CreateFile . Wobei mir von keinem Problem mit CreateFileA (bzw. CreateFile in einem nicht-UNICODE Programm) bekannt wäre. Wird also vermutlich nix bringen.

    Ansonsten sollte alles hier stehen:
    https://support.microsoft.com/kb/115831

    Ich hab' das auch schon in vielen Programmen verwendet, hat immer einwandfrei funktioniert. Wichtig ist natürlich dass du die passenden Parameter/Flags übergibst, also z.B. OPEN_EXISTING bei dwCreationDisposition und 0 bei dwShareMode .
    (Und falls du das nicht machst bitte keine Vorträge darüber dass es bei COM1...9 ja auch funktioniert hat - kann leicht sein dass die Regeln bei COM1...9 zwecks Kompatibilität mit alten Programmen aufgeweicht wurden. COM1...9 ohne "\\\\.\\" gibt es schliesslich überhaupt nur zwecks der Kompatibilität mit alten Programmen.)

    Kannst ja mal den ganzen Aufruf posten, also welche Flags etc. du übergibst. Und hol dir mit GetLastError den Fehlerwert und poste diesen hier (bzw. such' damit zuerst selbst ob du ne Lösung findest, und poste dann die Lösung hier ;)).



  • Erstmal vielen Dank für deine Rückmeldung.

    Fakt ist, das ich es zuhause nicht hinbekommen habe und auf der Arbeit ging es auf anhieb (auch ohne Unicode). Also vermute ich mal, ich war gestern zu müde und hab versucht den falschen COM-Port zu öffnen.

    Wie dem auch sei, ich stelle das generell auf "\\\.\" um. Und wenn ich es zuhause nochmal getestet habe, gebe ich auch nochmal Feedback



  • Richtig blöde Ursache:

    2 Laptops, 2x Win 7, 2x Visual Studio 2013, auf dem einem Laptop muss das Visual Studio als Admin gestartet werden, damit \\\.\\COMX geht, auf dem anderen nicht 🙄 🙄 🙄

    Eine Stunde hat mich das gekostet


Anmelden zum Antworten