структура 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 используется в качестве дискриминанта для объединения сведений в этой структуре.
Значение | Значение |
---|---|
|
Указывает, что один блок потока начал копироваться. Сведения содержатся в структуре ChunkStarted в объединении сведений . |
|
Указывает, что копия одного блока потока завершена. Сведения содержатся в структуре ChunkFinished в объединении сведений . |
|
Указывает, что как исходный, так и конечный дескриптор для потока были открыты и будет запущена копия потока. Сведения содержатся в структуре StreamStarted в объединении сведений . Это не означает, что копирование для этого потока запущено. |
|
Указывает, что операция копирования для потока была завершена успешно или из-за COPYFILE2_PROGRESS_STOP возврата из CopyFile2ProgressRoutine. Сведения содержатся в структуре StreamFinished в объединении сведений . |
|
Может отправляться периодически. Сведения содержатся в структуре PollContinue в рамках объединения сведений . |
|
Во время операции копирования произошла ошибка. Сведения содержатся в структуре Ошибки в объединении сведений . |
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) |