Création d’une application de sauvegarde

Pour effectuer une entrée ou une sortie sur une bande, une application de sauvegarde doit d’abord obtenir un handle du périphérique à bande. L’exemple de code suivant montre comment utiliser la fonction CreateFile pour ouvrir un périphérique à bande.

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

Pour sauvegarder une arborescence de répertoires sur une bande, une application doit utiliser les fonctions FindFirstFile et FindNextFile pour parcourir l’arborescence de répertoires. Chaque fois qu’un fichier est trouvé, l’application doit obtenir les attributs de fichier à l’aide de la fonction GetFileAttributes .

S’il existe des liens durs, une application doit déterminer le nombre de liens et enregistrer l’identificateur unique du fichier dans une table pour des comparaisons ultérieures. La première fois qu’un fichier est trouvé, l’application doit utiliser CreateFile pour ouvrir le fichier, et la fonction BackupRead pour commencer la sauvegarde. Ensuite, il peut utiliser la fonction WriteFile à plusieurs reprises pour transférer toutes les informations dans la mémoire tampon utilisée par BackupRead vers la bande. La deuxième fois qu’un fichier est trouvé (vérifié par rapport à la table des identificateurs de fichier lorsqu’il existe des liens durs), l’application peut écrire les informations générales du fichier dans la bande, suivie d’un flux qui a un identificateur qui est BACKUP_LINK.

Lors de la restauration de fichiers d’une bande à un disque, une application doit utiliser les fonctions CreateFile, BackupWrite et ReadFile . Pour chaque fichier sur une bande, l’application doit utiliser CreateFile pour créer un fichier sur le disque et BackupWrite pour commencer à restaurer le fichier. Ensuite, l’application doit utiliser ReadFile à plusieurs reprises jusqu’à ce que toutes les informations du fichier soient lues à partir de la bande dans la mémoire tampon remplie par BackupWrite.

Si l’un des flux de la mémoire tampon BackupWrite a un identificateur de flux BACKUP_LINK , l’application doit établir un lien physique. Si les données nécessaires pour établir le lien n’existent pas, BackupWrite échoue. L’application peut utiliser un catalogue préexistant pour localiser et restaurer les données d’origine, ou elle peut informer l’utilisateur que les données de fichier à restaurer se trouvent à un autre emplacement.