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 结构中。 这并不表示已针对该流启动复制。 |
|
指示流复制操作已开始完成,无论是成功还是由于 CopyFile2ProgressRoutine返回COPYFILE2_PROGRESS_STOP。 信息位于信息联合内的 StreamFinished 结构中。 |
|
可以定期发送。 信息位于信息联合内的 PollContinue 结构中。 |
|
复制操作期间遇到错误。 信息位于信息联合内的错误结构中。 |
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) |