Creación de una aplicación de copia de seguridad

Para realizar la entrada o salida en una cinta, una aplicación de copia de seguridad debe obtener primero un identificador del dispositivo de cinta. En el ejemplo de código siguiente se muestra cómo usar la función CreateFile para abrir un dispositivo de cinta.

HANDLE hTape;   // handle to tape device
 
hTape = CreateFile(TEXT("\\\\.\\TAPE0"),         // tape dev to open
                   GENERIC_READ | GENERIC_WRITE, // read/write access
                   0,                            // not used
                   0,                            // not used
                   OPEN_EXISTING,                // req for tape devs
                   0,                            // not used
                   NULL);                        // not used

Para realizar una copia de seguridad de un árbol de directorios en una cinta, una aplicación debe usar las funciones FindFirstFile y FindNextFile para recorrer el árbol de directorios. Cada vez que se encuentra un archivo, la aplicación debe obtener los atributos de archivo mediante la función GetFileAttributes .

Si hay vínculos físicos, una aplicación debe determinar el número de vínculos y guardar el identificador único del archivo en una tabla para futuras comparaciones. La primera vez que se encuentra un archivo, la aplicación debe usar CreateFile para abrir el archivo y la función BackupRead para iniciar la copia de seguridad. A continuación, puede usar la función WriteFile repetidamente para transferir toda la información del búfer usado por BackupRead a la cinta. La segunda vez que se encuentra un archivo (se comprueba con la tabla de identificadores de archivo cuando hay vínculos físicos), la aplicación puede escribir la información general del archivo en la cinta, seguida de una secuencia que tiene un identificador que es BACKUP_LINK.

Al restaurar archivos de cinta a disco, una aplicación debe usar las funciones CreateFile, BackupWrite y ReadFile . Para cada archivo de una cinta, la aplicación debe usar CreateFile para crear un nuevo archivo en el disco y BackupWrite para empezar a restaurar el archivo. A continuación, la aplicación debe usar ReadFile repetidamente hasta que toda la información del archivo se lea de la cinta en el búfer rellenado por BackupWrite.

Si una de las secuencias del búfer BackupWrite tiene un identificador de flujo BACKUP_LINK , la aplicación debe establecer un vínculo físico. Si los datos necesarios para establecer el vínculo no existen, Se produce un error en BackupWrite . La aplicación puede usar un catálogo preexistente para buscar y restaurar los datos originales, o bien puede notificar al usuario que los datos del archivo que se van a restaurar se encuentran en una ubicación diferente.