LPPROGRESS_ROUTINE回调函数 (winbase.h)

CopyFileExMoveFileTransactedMoveFileWithProgress 函数一起使用的应用程序定义的回调函数。 当复制或移动操作的一部分完成时,将调用它。 LPPROGRESS_ROUTINE类型定义指向此回调函数的指针。 CopyProgressRoutine 是应用程序定义的函数名称的占位符。

语法

LPPROGRESS_ROUTINE LpprogressRoutine;

DWORD LpprogressRoutine(
  [in]           LARGE_INTEGER TotalFileSize,
  [in]           LARGE_INTEGER TotalBytesTransferred,
  [in]           LARGE_INTEGER StreamSize,
  [in]           LARGE_INTEGER StreamBytesTransferred,
  [in]           DWORD dwStreamNumber,
  [in]           DWORD dwCallbackReason,
  [in]           HANDLE hSourceFile,
  [in]           HANDLE hDestinationFile,
  [in, optional] LPVOID lpData
)
{...}

参数

[in] TotalFileSize

文件的总大小(以字节为单位)。

[in] TotalBytesTransferred

自复制操作开始以来,从源文件传输到目标文件的字节总数。

[in] StreamSize

当前文件流的总大小(以字节为单位)。

[in] StreamBytesTransferred

自复制操作开始以来,当前流中已从源文件传输到目标文件的字节总数。

[in] dwStreamNumber

当前流的句柄。 首次调用 CopyProgressRoutine 时,流号为 1。

[in] dwCallbackReason

调用 CopyProgressRoutine 的原因。 此参数的取值可为下列值之一:

含义
CALLBACK_CHUNK_FINISHED
0x00000000
复制了数据文件的另一部分。
CALLBACK_STREAM_SWITCH
0x00000001
另一个流已创建,即将复制。 这是首次调用回调例程时给定的回调原因。

[in] hSourceFile

源文件的句柄。

[in] hDestinationFile

目标文件的句柄

[in, optional] lpData

CopyFileExMoveFileTransactedMoveFileWithProgress 传递给 CopyProgressRoutine 的参数

返回值

CopyProgressRoutine 函数应返回以下值之一。

返回代码/值 说明
PROGRESS_CANCEL
1
取消复制操作并删除目标文件。
PROGRESS_CONTINUE
0
继续复制操作。
PROGRESS_QUIET
3
继续复制操作,但停止调用 CopyProgressRoutine 以报告进度。
PROGRESS_STOP
2
停止复制操作。 以后可以重启它。

注解

应用程序可以使用此信息来显示进度栏,该进度栏显示复制的总字节数占文件大小的百分比。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)

另请参阅

CopyFileEx

文件管理函数

MoveFileTransacted

MoveFileWithProgress