The BackupWrite function writes a stream of data from a buffer to a specified file or directory. The data must be divided into substreams separated by WIN32_STREAM_ID structures. You use this function to restore a file or directory that has been backed up.
BOOL BackupWrite(
HANDLE hFile, |
// handle to file or directory |
LPBYTE lpBuffer, |
// pointer to buffer containing data to write |
DWORD nNumberOfBytesToWrite, |
// number of bytes to write |
LPDWORD lpNumberOfBytesWritten, |
// pointer to variable to receive number of bytes written |
BOOL bAbort, |
// termination type |
BOOL bProcessSecurity, |
// process security |
LPVOID *lpContext |
// pointer to pointer to internal context information |
); |
The BackupWrite function fails if CreateFile was called with the
flag FILE_FLAG_NO_BUFFERING. In this case, the GetLastError
function returns the value ERROR_INVALID_PARAMETER.
If bProcessSecurity is TRUE, you need to have specified WRITE_OWNER
and WRITE_DAC access when opening the file or directory handle. If the handle
does not have those access rights, the operating system denies access to the
ACL data, and ACL data restoration will not occur.
You must set the variable pointed to by lpContext to NULL before the first call to BackupWrite for the specified file or directory. The function allocates memory for the data structure, and then sets the variable to point to that structure. You must not change lpContext or the variable that it points to between calls to BackupWrite.
To release the memory used by the data structure, call BackupWrite with the bAbort parameter set to TRUE when the restore operation is complete.
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero, indicating that an I/O error occurred. To get extended error information, call GetLastError.
The BACKUP_LINK stream type lets you restore files with hard links.
Data obtained by the BackupRead function should only be used as input to the BackupWrite function.