readFile() blocierend machen??



  • Hallo,

    kann mir jemand erklären wie ich die Funktion readFile() blockierend machen kann?

    Ich lese mit ihr Strings von COM1 und sie sieht bei mir in Moment so aus:

    OVERLAPPED osRead = {0};
    bResult = ReadFile(hPipe, &str_buffer, dwToRead, &dwRead, &osRead);
    

    Danke in Voraus!



  • Ganz einfach - stell' das File um auf nicht-OVERLAPPED, dann kehrt ReadFile() erst zurück, wenn es fertig ist mit Lesen. Alternativ kannst du auch mit WaitForSingleObject(osRead.hEvent,INFINITE); warten, bis ReadFile fertig ist mit seiner Arbeit.



  • Danke, das hat geklappt!

    Könnte eigendlich auch selber darauf kommen... 🙄 aber trotzdem danke.

    Hier nochmal die Änderung:

    hPipe = CreateFile(  lpszPipename,
                         GENERIC_READ | GENERIC_WRITE,
                         0,
                         0,
                         OPEN_EXISTING,
                         FILE_ATTRIBUTE_NORMAL, //war zuerst FILE_FLAG_OVERLAPPED,
                         NULL);
    

Anmelden zum Antworten