Поделиться через


структура COPYFILE2_MESSAGE (winbase.h)

Передается функции обратного вызова CopyFile2ProgressRoutine со сведениями об ожидающей операции копирования.

Синтаксис

typedef struct COPYFILE2_MESSAGE {
  COPYFILE2_MESSAGE_TYPE Type;
  DWORD                  dwPadding;
  union {
    struct {
      DWORD          dwStreamNumber;
      DWORD          dwReserved;
      HANDLE         hSourceFile;
      HANDLE         hDestinationFile;
      ULARGE_INTEGER uliChunkNumber;
      ULARGE_INTEGER uliChunkSize;
      ULARGE_INTEGER uliStreamSize;
      ULARGE_INTEGER uliTotalFileSize;
    } ChunkStarted;
    struct {
      DWORD          dwStreamNumber;
      DWORD          dwFlags;
      HANDLE         hSourceFile;
      HANDLE         hDestinationFile;
      ULARGE_INTEGER uliChunkNumber;
      ULARGE_INTEGER uliChunkSize;
      ULARGE_INTEGER uliStreamSize;
      ULARGE_INTEGER uliStreamBytesTransferred;
      ULARGE_INTEGER uliTotalFileSize;
      ULARGE_INTEGER uliTotalBytesTransferred;
    } ChunkFinished;
    struct {
      DWORD          dwStreamNumber;
      DWORD          dwReserved;
      HANDLE         hSourceFile;
      HANDLE         hDestinationFile;
      ULARGE_INTEGER uliStreamSize;
      ULARGE_INTEGER uliTotalFileSize;
    } StreamStarted;
    struct {
      DWORD          dwStreamNumber;
      DWORD          dwReserved;
      HANDLE         hSourceFile;
      HANDLE         hDestinationFile;
      ULARGE_INTEGER uliStreamSize;
      ULARGE_INTEGER uliStreamBytesTransferred;
      ULARGE_INTEGER uliTotalFileSize;
      ULARGE_INTEGER uliTotalBytesTransferred;
    } StreamFinished;
    struct {
      DWORD dwReserved;
    } PollContinue;
    struct {
      COPYFILE2_COPY_PHASE CopyPhase;
      DWORD                dwStreamNumber;
      HRESULT              hrFailure;
      DWORD                dwReserved;
      ULARGE_INTEGER       uliChunkNumber;
      ULARGE_INTEGER       uliStreamSize;
      ULARGE_INTEGER       uliStreamBytesTransferred;
      ULARGE_INTEGER       uliTotalFileSize;
      ULARGE_INTEGER       uliTotalBytesTransferred;
    } Error;
  } Info;
} COPYFILE2_MESSAGE;

Члены

Type

Значение из перечисления COPYFILE2_MESSAGE_TYPE используется в качестве дискриминанта для объединения сведений в этой структуре.

Значение Значение
COPYFILE2_CALLBACK_CHUNK_STARTED
1
Указывает, что один блок потока начал копироваться. Сведения содержатся в структуре ChunkStarted в объединении сведений .
COPYFILE2_CALLBACK_CHUNK_FINISHED
2
Указывает, что копия одного блока потока завершена. Сведения содержатся в структуре ChunkFinished в объединении сведений .
COPYFILE2_CALLBACK_STREAM_STARTED
3
Указывает, что как исходный, так и конечный дескриптор для потока были открыты и будет запущена копия потока. Сведения содержатся в структуре StreamStarted в объединении сведений . Это не означает, что копирование для этого потока запущено.
COPYFILE2_CALLBACK_STREAM_FINISHED
4
Указывает, что операция копирования для потока была завершена успешно или из-за COPYFILE2_PROGRESS_STOP возврата из CopyFile2ProgressRoutine. Сведения содержатся в структуре StreamFinished в объединении сведений .
COPYFILE2_CALLBACK_POLL_CONTINUE
5
Может отправляться периодически. Сведения содержатся в структуре PollContinue в рамках объединения сведений .
COPYFILE2_CALLBACK_ERROR
6
Во время операции копирования произошла ошибка. Сведения содержатся в структуре Ошибки в объединении сведений .

dwPadding

Info

Info.ChunkStarted

Эта структура выбирается, если для элемента Type задано значение COPYFILE2_CALLBACK_CHUNK_STARTED (1).

Info.ChunkStarted.dwStreamNumber

Указывает, какой поток в файле будет скопирован. Значение, используемое для идентификации потока в файле, начинается с единицы (1) и всегда будет выше, чем любой предыдущий поток для этого файла.

Info.ChunkStarted.dwReserved

Этот элемент зарезервирован для внутреннего использования.

Info.ChunkStarted.hSourceFile

Дескриптор исходного потока.

Info.ChunkStarted.hDestinationFile

Дескриптор целевого потока.

Info.ChunkStarted.uliChunkNumber

Указывает, какой блок в текущем потоке будет скопирован. Значение, используемое для блока, начинается с нуля (0) и всегда будет выше, чем у любого предыдущего блока для текущего потока.

Info.ChunkStarted.uliChunkSize

Размер скопированного блока в байтах.

Info.ChunkStarted.uliStreamSize

Размер текущего потока в байтах.

Info.ChunkStarted.uliTotalFileSize

Размер всех потоков для этого файла в байтах.

Info.ChunkFinished

Эта структура выбирается, если для элемента Type задано значение COPYFILE2_CALLBACK_CHUNK_FINISHED (2).

ChunkFinished.dwReserved

Этот элемент зарезервирован для внутреннего использования.

Info.ChunkFinished.dwStreamNumber

Указывает, какой поток в файле будет скопирован. Значение, используемое для идентификации потока в файле, начинается с единицы (1) и всегда будет выше, чем любой предыдущий поток для этого файла.

Info.ChunkFinished.dwFlags

Info.ChunkFinished.hSourceFile

Дескриптор исходного потока.

Info.ChunkFinished.hDestinationFile

Дескриптор целевого потока.

Info.ChunkFinished.uliChunkNumber

Указывает, какой блок в текущем потоке находится в процессе. Значение, используемое для блока, начинается с нуля (0) и всегда будет выше, чем у любого предыдущего блока для текущего потока.

Info.ChunkFinished.uliChunkSize

Размер скопированного блока в байтах.

Info.ChunkFinished.uliStreamSize

Размер текущего потока в байтах.

Info.ChunkFinished.uliStreamBytesTransferred

Всего байтов, скопированных для этого потока на данный момент.

Info.ChunkFinished.uliTotalFileSize

Размер всех потоков для этого файла в байтах.

Info.ChunkFinished.uliTotalBytesTransferred

Всего байтов, скопированных для этого файла на данный момент.

Info.StreamStarted

Эта структура выбирается, если для элемента Type задано значение COPYFILE2_CALLBACK_STREAM_STARTED (3).

Info.StreamStarted.dwStreamNumber

Указывает, какой поток в файле будет скопирован. Значение, используемое для идентификации потока в файле, начинается с единицы (1) и всегда будет выше, чем любой предыдущий поток для этого файла.

Info.StreamStarted.dwReserved

Этот элемент зарезервирован для внутреннего использования.

Info.StreamStarted.hSourceFile

Дескриптор исходного потока.

Info.StreamStarted.hDestinationFile

Дескриптор целевого потока.

Info.StreamStarted.uliStreamSize

Размер текущего потока в байтах.

Info.StreamStarted.uliTotalFileSize

Размер всех потоков для этого файла в байтах.

Info.StreamFinished

Эта структура выбирается, если для элемента Type задано значение COPYFILE2_CALLBACK_STREAM_FINISHED (4).

Info.StreamFinished.dwStreamNumber

Указывает, какой поток в файле будет скопирован. Значение, используемое для идентификации потока в файле, начинается с единицы (1) и всегда будет выше, чем любой предыдущий поток для этого файла.

Info.StreamFinished.dwReserved

Этот элемент зарезервирован для внутреннего использования.

Info.StreamFinished.hSourceFile

Дескриптор исходного потока.

Info.StreamFinished.hDestinationFile

Дескриптор целевого потока.

Info.StreamFinished.uliStreamSize

Размер текущего потока в байтах.

Info.StreamFinished.uliStreamBytesTransferred

Всего байтов, скопированных для этого потока на данный момент.

Info.StreamFinished.uliTotalFileSize

Размер всех потоков для этого файла в байтах.

Info.StreamFinished.uliTotalBytesTransferred

Всего байтов, скопированных для этого файла на данный момент.

Info.PollContinue

Эта структура выбирается, если для элемента Type задано значение COPYFILE2_CALLBACK_POLL_CONTNUE (5).

Info.PollContinue.dwReserved

Этот элемент зарезервирован для внутреннего использования.

Info.Error

Эта структура выбирается, если для элемента Type задано значение COPYFILE2_CALLBACK_ERROR (6).

Info.Error.CopyPhase

Значение из перечисления COPYFILE2_COPY_PHASE , указывающее текущий этап копирования на момент ошибки.

Info.Error.dwStreamNumber

Номер потока, который обрабатывался во время ошибки.

Info.Error.hrFailure

Значение, указывающее на проблему.

Info.Error.dwReserved

Этот элемент зарезервирован для внутреннего использования.

Info.Error.uliChunkNumber

Указывает, какой фрагмент в текущем потоке обрабатывался во время ошибки. Значение, используемое для блока, начинается с нуля (0) и всегда будет выше, чем у любого предыдущего блока для текущего потока.

Info.Error.uliStreamSize

Размер обрабатываемого потока (в байтах).

Info.Error.uliStreamBytesTransferred

Число байтов, которые были успешно переданы для обрабатываемого потока.

Info.Error.uliTotalFileSize

Размер всего обрабатываемого файла в байтах.

Info.Error.uliTotalBytesTransferred

Число байтов, которые были успешно переданы для всей операции копирования.

Комментарии

Чтобы скомпилировать приложение, использующее структуру COPYFILE2_MESSAGE , определите макрос _WIN32_WINNT как 0x0601 или более поздней версии. Дополнительные сведения см. в разделе Использование заголовков Windows.

Требования

Требование Значение
Минимальная версия клиента Windows 8 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2012 [классические приложения | Приложения UWP]
Верхняя часть winbase.h (включая Windows.h)