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
指示流复制操作已开始完成,无论是成功还是由于 CopyFile2ProgressRoutine返回COPYFILE2_PROGRESS_STOP。 信息位于信息联合内的 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 (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 (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 (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 (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)