GetOverlappedResult, WaitForSingleObject und Fortschrittsanzeige



  • hi,

    ich verwende ueberlappende lese- (ReadFile) und schreiboperationen (WriteFile) und wollte nun eine fortschrittsanzeige implementieren (mittels einer Callback-Funktion). jemand ne idee wie man das machen koennte, denn GetOverlappedResult liefert in BytesRead staendig 0, wenn man fuer den Parameter bWait = false angibt?

    while (WaitForSingleObject(OverlappedRead.hEvent, 100) != WAIT_OBJECT_0)
    {
      // solange die Operation laeuft die Callback-Funktion aufrufen
      if (!GetOverlappedResult(DeviceHandle, &OverlappedRead, &BytesRead, false))
        CallbackFun(BytesRead, BytesToRead);
    }
    

    danke



  • Asynchrone I/O liefert keine Fortschrittsdaten, nur "fertig oder nicht".
    Für eine realistische Fortschrittsanzeige müßtest du die Anforderungen in einzelne Blöcke teilen, was ohne eigenen Thread wahrscheinlich schwierig ist (zumindest fällt mir keine Lösung ein).



  • so habe ich das jetzt auch gemacht. ich lese immer 4Kb blöcke und rufe danach die callback-funktion auf. das wiederhole ich solange, bis ich alle daten gelesen habe.


Anmelden zum Antworten