要在磁带上执行任何输入或输出,备份应用程序必须首先获取磁带设备的句柄。以下代码示例显示如何使用CreateFile功能打开磁带设备。
HANDLE hTape; /* handle to tape device */
hTape = CreateFile(
“\\\\\\\\。\\\\ TAPE0”,/ *要打开的磁带设备的名称* /
GENERIC_READ | GENERIC_WRITE,/ *读写访问* /
0,/ *未使用* /
0,/ *未使用* /
磁带设备需要OPEN_EXISTING / * * /
0,/ *未使用* /
NULL); /* not used */
要将目录树备份到磁带,应用程序必须使用FindFirstFile和FindNextFile函数遍历目录树。每次找到文件时,应用程序应使用GetFileAttributes功能获取文件的属性。如果有硬链接,应用程序应该确定链接的数量,并将文件的唯一标识符保存在表中以供将来进行比较。首次找到文件时,应用程序应使用CreateFile打开文件和BackupRead功能开始备份。然后可以重复使用WriteFile功能将由BackupRead填充的缓冲区中的所有信息传输到磁带。第二次找到文件(当有硬链接时,检查文件标识符表),应用程序可以简单地将一般文件信息写入磁带,后跟标识符为BACKUP_LINK的流。
将文件从磁带恢复到磁盘时,应用程序必须使用CreateFile,BackupWrite和ReadFile功能。对于磁带上的每个文件,应用程序应使用CreateFile在磁盘上创建一个新文件,BackupWrite开始恢复文件。然后应该重复使用ReadFile,直到文件的所有信息都已从磁带读入BackupWrite填充的缓冲区中。如果BackupWrite缓冲区中的一个流具有BACKUP_LINK流标识符,则应用程序必须建立一个硬链接。如果建立链接所需的数据不存在,BackupWrite将失败。应用程序可以使用预先存在的目录来定位和恢复原始数据,或者可以通知用户要恢复的文件数据位于不同的位置。