CreateFile()?



  • Hallo,

    ich habe ein Problem mit CreateFile(). Und zwar wollte ich den Programmcode für serielle Schnittstellen von Anton Zechner benutzen. (siehe http://members.inode.at/anton.zechner/az/index.html unter serielle Schnittstelle)

    Das Problem tritt auf, wenn ich mit CreateFile die COM1-Schnittstelle öffnen möchte:

    char cName[] = "\\\\.\\COM1";
    
    cName[7] = '1' + Nr;
    
    CreateFile(cName,
               GENERIC_READ|GENERIC_WRITE,
               0,
               0,
               OPEN_EXISTING,
               FILE_ATTRIBUTE_NORMAL,
               0);
    

    Wenn ich den Programmcode so übersetze bekomme ich die Fehlermeldung:

    Konvertierung des Parameters 1 von char[9] in 'LPCWSTR' nicht möglich

    Also habe ich versucht cName zu casten:

    CreateFile((LPCWSTR)cName,
               GENERIC_READ|GENERIC_WRITE,
               0,
               0,
               OPEN_EXISTING,
               FILE_ATTRIBUTE_NORMAL,
               0);
    

    Dann bekomme ich keine Fehlermeldung mehr, aber im Debug-Modus bekomme ich, vermutlich durch ein falsches casten, ein verkehrtes Handle zurück.

    Wenn ich die Schnittstelle versuche so zu öffnen wie im folgenden Programmcode geht alles ohne Probleme:

    CreateFile(_T("COM1"),
               GENERIC_READ|GENERIC_WRITE,
               0,
               0,
               OPEN_EXISTING,
               FILE_ATTRIBUTE_NORMAL,
               0);
    

    Ich habe leider noch nicht soviel Ahnung vom Typecasting und bin auch im Internet noch nicht fündig geworden. Vielleicht kann mir ja jemand helfen.

    Gruss

    Oliver



  • Der Unterschied zwischen dem ersten und dem letzten ist, dass du im letzten einen CString im Unicode verwendest und im ersten einen char. Ein char betsteht meißt nur aus einem zeichen und der Array den du da erstellst wird dir auch nicht weiterhelfen.



  • Versuchs mal mit:

    CreateFileA, der Ansi Version 😉



  • Ja, OK. Nur hast Du eine Idee wie man das Problem lösen kann?

    Oliver



  • Ah Ja, danke das werde ich gleich probieren

    Oliver



  • Das sieht gut aus! Freu.

    Vielen Dank für Deine Hilfe Frank!

    Gruss

    Oliver


Anmelden zum Antworten