CopyFileEx Callback Funktion



  • Hallo,

    für CopyFileEx benötige ich ja eine Callback Funktion. Ich hab da auch was gefunden und umgeschrieben:

    DWORD CALLBACK CopyProgressRoutine(
        LARGE_INTEGER TotalFileSize,          // Datei Größe
        LARGE_INTEGER TotalBytesTransferred,  // Kopierten Bytes
        LARGE_INTEGER StreamSize,             // Stream Größe in Byte
        LARGE_INTEGER StreamBytesTransferred, // Kopierten Bytes des Streams
        DWORD dwStreamNumber,                 // aktueller Stream
        DWORD dwCallbackReason,               // calelback reason
        HANDLE hSourceFile,                   // handle to source file
        HANDLE hDestinationFile,              // handle to destination file
        LPVOID lpData                         // from CopyFileEx
    )
    {
        Application->ProcessMessages();
        if (copystop==false)
        return PROGRESS_CONTINUE;
        else
        return PROGRESS_CANCEL;
    
    }
    

    Aber was ist eine Callback Funktion eigentlich und was macht sie aus. Und was heißt DWORD,LPVOID,LARGE_INTEGER? Sind das Variablentypen von WINAPI oder was?



  • Hallo

    eine Callback-Funktion ist eine Anwendung von Funktionspointern.
    Das Prinzip ist immer dasselbe :
    Du hast eine Funktion, die iterativ arbeitet (in deinem Fall CopyFileEx). Bei jedem Schritt soll eine anwendungsspezifische Funktion ausgeführt werden, die zu diesem Zweck "zurückgerufen" wird (in deinem Fall eine Überprüfung, ob das Kopieren fortgesetzt werden soll.

    Und was heißt DWORD,LPVOID,LARGE_INTEGER? Sind das Variablentypen von WINAPI oder was?

    Das sind typdefs der WinAPI, hinter denen sich C- kompatible Daten verbergen.
    Was genau, findest du im WinAPI-Forum oder in MSDN.

    bis bald
    akari



  • daniel1986 schrieb:

    Und was heißt DWORD,LPVOID,LARGE_INTEGER? Sind das Variablentypen von WINAPI oder was?

    unter 32bit windoofs ist
    DWORD --> ein unsigned 32 bit wert
    LPVOID --> ein typloser zeiger (void*)
    LARGE_INTEGER --> eine struct die aus 2 32-bit komponenten besteht (64 bits)



  • Vielen Dank für die schnelle Hilfe!


Anmelden zum Antworten