The BackupRead function reads data associated with a specified file or directory into a buffer. You use this function to back up a file or directory.
BOOL BackupRead(
HANDLE hFile, // handle to file or directory
LPBYTE lpBuffer, // pointer to buffer to read to
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // pointer to variable to receive
// number of bytes read
BOOL bAbort, // termination type
BOOL bProcessSecurity, // process security flag
LPVOID *lpContext // pointer to pointer to internal
// context information
);
The BackupRead 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 the function returns a nonzero value, and the variable pointed to by lpNumberOfBytesRead is zero, then all the data associated with the file handle has been read.
If bProcessSecurity is TRUE, the ACL data will be backed up.
You must set the variable pointed to by lpContext to NULL before the first call to BackupRead 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 BackupRead.
To release the memory used by the data structure, call BackupRead with the bAbort parameter set to TRUE when the backup 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.
BackupRead processes all of the data pertaining to an opened object as a series of discrete byte streams. Each stream is preceded by a 32-bit aligned WIN32_STREAM_ID structure.
Streams must be processed in the same order in which they were written to the tape. This ordering enables applications to compare the data backed up against the data on the source device. The data returned by BackupRead is to be used only as input to the BackupWrite function. This data is returned as one large data stream divided into substreams. The substreams are separated by WIN32_STREAM_ID headers.
If an error occurs while BackupRead is reading, the calling process can skip the bad data by calling the BackupSeek function.
Windows NT: Requires version 3.1 or later.
Windows: Unsupported.
Windows CE: Unsupported.
Header: Declared in winbase.h.
Import Library: Use kernel32.lib.
Tape Backup Overview, Tape Backup Functions, BackupWrite, BackupSeek, WIN32_STREAM_ID