14 сент. 2010 г.

CopyProgressRoutine

Функция CopyProgressRoutine – это определяемая приложением функция обратного вызова, используемая функциями CopyFileEx и MoveFileWithProgress. Она вызывается тогда, когда часть операции копирования или перемещения завершена. Тип LPPROGRESS_ROUTINE определяет адрес к этой функции обратного вызова. CopyProgressRoutine – это зарезервированное имя для определяемой приложением функции обратного вызова.

DWORD CALLBACK CopyProgressRoutine(
  LARGE_INTEGER TotalFileSize,
  LARGE_INTEGER TotalBytesTransferred,
  LARGE_INTEGER StreamSize,
  LARGE_INTEGER StreamBytesTransferred,
  DWORD dwStreamNumber,
  DWORD dwCallbackReason,
  HANDLE hSourceFile,
  HANDLE hDestinationFile,
  LPVOID lpData
);

Параметры:
TotalFileSizeКонечный размер файла, в байтах.
TotalBytesTransferredКонечное количество байт, переданных от файла-источника к файлу-назначения, начиная от начала операции копирования.
StreamSizeКонечный размер текущего файлового потока, в байтах.
StreamBytesTransferredКонечное количество байт в текущем потоку, которые были переданы от файла-источника к файлу-назначения, начиная от начала операции копирования.
dwStreamNumberДескриптор текущего потока. При первом вызове CopyProgressRoutine, поток имеет номер 1.
dwCallbackReasonПричина, пот которой была вызвана CopyProgressRoutine. Этот параметр может принимать одно из следующих значений:
CALLBACK_CHUNK_FINISHED
- была скопирована другая часть данных файла.
CALLBACK_STREAM_SWITCH
- Был создан другой поток и он в копировании. Это причиняется обратным вызовом, когда обратный вызов был вызван первый раз.
hSourceFileДескриптор файла-источника.
hDestinationFileДескриптор файла-назначения.
lpDataАргумент, переданный CopyProgressRoutine от функции CopyFileEx или MoveFileWithProgress.

Возвращаемые значения:
Функция CopyProgressRoutine может возвращать одно из слудующих значений:
Значение:
Описание:
PROGRESS_CONTINUEПродолжение операции копирования.
PROGRESS_CANCELЗавершение операции копирования и удаление файла-назначения.
PROGRESS_STOPОстанов операции копирования. Она может быть перезапущена позже.
PROGRESS_QUIETПродолжение операции копирования, но останов вызова CopyProgressRoutine для отчета о прогрессе.

Замечания:
Приложение может использовать эту функцию для отображения в своем окне процентного соотношения скопированных байт.
Смотрите также:
CopyFileEx, MoveFileWithProgress