The CopyProgressRoutine function is called when a portion of a copy operation started by CopyFileEx is completed. This function is an application-defined callback routine.
DWORD WINAPI CopyProgressRoutine(
LARGE_INTEGER TotalFileSize, |
// total file size, in bytes |
LARGE_INTEGER TotalBytesTransferred, |
// total number of bytes transferred |
LARGE_INTEGER StreamSize, |
// total number of bytes for this stream |
LARGE_INTEGER StreamBytesTransferred, |
// total number of bytes transferred for this stream |
DWORD dwStreamNumber, |
// the current stream |
DWORD dwCallbackReason, |
// reason for callback |
HANDLE hSourceFile, |
// handle to the source file |
HANDLE hDestinationFile, |
// handle to the destination file |
LPVOID lpData |
// passed by CopyFileEx |
); |
Value |
Meaning |
CALLBACK_CHUNK_FINISHED |
Another part of the data file was copied. |
CALLBACK_STREAM_SWITCH |
Another stream was created and is about to be copied. This is the callback reason given when the callback routine is first invoked. |
The CopyProgressRoutine function should return one of the following values:
Value |
Meaning |
PROGRESS_CONTINUE |
Continue the copy operation. |
PROGRESS_CANCEL |
Cancel the copy operation and delete the destination file. |
PROGRESS_STOP |
Stop the copy operation. It can be restarted at a later time. |
PROGRESS_QUIET |
Continue the copy operation, but stop invoking CopyProgressRoutine to report progress. |
An application can use this information to display a progress bar that shows the total number of bytes copied as a percent of the total file size.