BackupRead功能将与指定文件或目录关联的数据读入缓冲区。您可以使用此函数来备份文件或目录。
BOOL BackupRead(
HANDLE 【HFILE】, | //处理文件或目录 |
LPBYTE 【lpBuffer】, | //指向要读取的缓冲区的指针 |
DWORD 【nNumberOfBytesToRead】, | //要读取的字节数 |
LPDWORD 【lpNumberOfBytesRead】, | //指向变量的指针,以接收读取的字节数 |
BOOL 【bAbort】, | //终止类型 |
BOOL 【bProcessSecurity】, | //进程安全标志 |
LPVOID *【lpContext】 | //指向指向内部上下文信息的指针 |
); |
参数
【HFILE】
处理要备份的文件或目录。该函数读取与此文件相关的数据。通过调用CreateFile函数获取此句柄。
如果CreateFile被标记为FILE_FLAG_NO_BUFFERING,则BackupRead功能失败。在这种情况下,GetLastError 函数返回值ERROR_INVALID_PARAMETER。
【lpBuffer】
指向函数将数据写入的缓冲区的指针。
【nNumberOfBytesToRead】
指定缓冲区的长度。缓冲区大小必须大于WIN32_STREAM_ID结构的大小。
【lpNumberOfBytesRead】
指向变量的指针,当函数返回时,包含读取的字节数。
如果函数返回值为TRUE,并且【lpNumberOfBytesRead】指向的变量为零,则所有与文件句柄相关联的数据都已被读取。
【bAbort】
指示BackupRead是否异常终止。如果该值为TRUE,则操作异常终止,所有缓冲区都被取消分配。
【bProcessSecurity】
指示该函数是否还原文件或目录的访问控制列表(ACL)数据。
如果【bProcessSecurity】为TRUE,则ACL数据将被备份。
【lpContext】
指向一个变量的指针,该变量接收并保存由BackupRead用于在备份操作期间维护上下文信息的内部数据结构的指针。
在首次调用指定的文件或目录之前,必须先将【lpContext】指向的变量设置为NULL。该函数为数据结构分配内存,然后将变量设置为指向该结构。您不得更改【lpContext】或其对BackupRead的呼叫之间指向的变量。
要释放数据结构使用的内存,在备份操作完成时,请将【bAbort】参数设置为TRUE。
返回值
如果函数成功,返回值不为零。
如果函数失败,则返回值为零,表示发生了I / O错误。要获取扩展错误信息,请调用GetLastError.
备注
BackupRead将与打开的对象相关的所有数据作为一系列离散字节流进行处理。每个流之前是一个32位对齐的WIN32_STREAM_ID结构。
流必须按照写入磁带的顺序进行处理。该排序使应用程序能够将备份的数据与源设备上的数据进行比较。BackupRead返回的数据仅作为BackupWrite功能的输入使用。该数据作为分成子流的一个大数据流返回。子流由WIN32_STREAM_ID标题分隔。
如果BackupRead正在读取时发生错误,则调用进程可以通过调用BackupSeek功能来跳过错误数据。
也可以看看