Entrée et sortie sur bande
Les applications peuvent utiliser plusieurs fonctions pour effectuer des entrées et sorties (e/s) sur un lecteur de bande. Les e/s de bande sont similaires aux e/s effectuées sur un appareil de communication.
Lors de l’exécution d’e/s sur bande, certains lecteurs de bande stockent les informations du microprogramme de bande dans les premiers blocs sur une bande, généralement à l’aide d’une partie des 100 premiers blocs. Les applications ne doivent pas utiliser ces blocs. Des informations plus spécifiques sur ce sujet sont disponibles auprès des fabricants de systèmes à bandes individuels. En général, une application qui ignore les premiers blocs 100 sur une bande évite les caractéristiques des lecteurs de bande.
Les fonctions GetTapePosition et SetTapePosition récupèrent et déplacent la position actuelle de la bande. La fonction WriteTapemark écrit un nombre spécifié de setmarks, de marques, de marques de courtes et de marques de caractères longs. La fonction EraseTape efface tout ou partie d’une bande.
Les fonctions ReadFile et WriteFile lisent et écrivent des données de fichier depuis et vers la bande. Les données sont lues et écrites dans des blocs complets. Si la taille de bloc de la bande est de 512 octets, toutes les opérations de lecture et d’écriture doivent utiliser des mémoires tampons qui sont des nombres entiers simples de cette taille de bloc : 512, 1024, 1536, 2048, et ainsi de suite. La plupart, voire tous, les lecteurs autorisent uniquement une opération d’écriture après le rembobinage de la bande ou après qu’une opération de lecture a produit un message d’erreur de fin de données.
Pour lire ou écrire des données de fichier vers ou à partir d’une bande en mode bloc de longueur variable, procédez comme suit :
- Déterminez si le lecteur de bande prend en charge le mode bloc de longueur variable en appelant la fonction GetTapeParameters et en vérifiant le _ _ _ bit de bloc de la variable de lecteur de bande du membre FeaturesLow de la structure de _ _ _ paramètres de lecteur obtenir la bande retournée.
- Spécifiez le mode de taille de bloc variable en appelant la fonction SetTapeParameters , en affectant la valeur zéro au membre BlockSize de la structure des paramètres de média de jeu de bandes _ _ _ . Ensuite, utilisez ReadFile ou WriteFile pour lire ou écrire les données du fichier.
Si ReadFile rencontre une marque de marque, les données jusqu’à la marque sont lues et la fonction échoue. (La fonction GetLastError retourne un code d’erreur indiquant le type de la marque de texte qui a été rencontrée.) Le système d’exploitation déplace la bande au-delà de la marque de la marque, et une application peut appeler à nouveau ReadFile pour continuer la lecture.
ReadFile et WriteFile lisent et écrivent uniquement le flux de données. Les fonctions BackupRead et BackupWrite lisent et écrivent tous les flux associés à un fichier. Celles-ci incluent les données, les attributs étendus, la sécurité et d’autres flux de données. La sécurité et les flux de données alternatifs s’appliquent uniquement à la partition de système de fichiers NTFS.
La fonction BackupSeek recherche dans un fichier accédé initialement par BackupRead ou BackupWrite. Cette fonction permet à une application d’ignorer les informations qui provoquent des erreurs d’accès.
Si une application doit accéder uniquement aux données du fichier, elle doit utiliser ReadFile et WriteFile. Ces fonctions peuvent également lire d’autres flux de données si les flux ont été créés à l’aide de la fonction CreateFile .
Une application de sauvegarde sur bande doit utiliser BackupRead et BackupWrite pour copier toutes les informations relatives à un fichier. Toutefois, ces fonctions ne lisent ni n’écrivent les caractéristiques des fichiers, telles que les attributs, l’heure de création de fichier, etc. Les applications doivent utiliser les fonctions d’entrée et de sortie de fichier, telles que GetFileAttributes et SetFileAttributes, pour récupérer et définir ces valeurs.