Partager via


Entrée et sortie de bande

Il existe plusieurs fonctions que les applications peuvent utiliser pour effectuer des entrées et sorties (E/S) sur un lecteur de bande. Les E/S sur 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 de microprogramme de bande dans les premiers blocs sur une bande, généralement en utilisant 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 de bandes individuels. En général, une application qui ignore les 100 premiers blocs sur une bande évite les idiosyncrasies du lecteur 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 filigranes, de filigranes de fichiers, de filigranes courts et de filigranes de fichiers 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 multiples entiers simples de cette taille de bloc : 512, 1024, 1536, 2048, et ainsi de suite. La plupart, si ce n’est pas le cas, les lecteurs autorisent uniquement une opération d’écriture une fois la bande rewound ou après qu’une opération de lecture génère un message d’erreur de fin de données.

Pour lire ou écrire des données de fichier dans ou à partir d’une bande en mode bloc de longueur variable, procédez comme suit :

  1. Déterminez si le lecteur de bande prend en charge le mode bloc de longueur variable en appelant la fonctionGetTapeParameterset en vérifiant le bit TAPE_DRIVE_VARIABLE_BLOCK du FeaturesLow membre de la structure de TAPE_GET_DRIVE_PARAMETERS retournée.
  2. Spécifiez le mode de taille de bloc variable en appelant la fonction SetTapeParameters, en définissant le membre BlockSize de la structure TAPE_SET_MEDIA_PARAMETERS sur zéro. Ensuite, utilisez ReadFile ou WriteFile pour lire ou écrire les données du fichier.

Si ReadFile rencontre une marque de fichier, les données jusqu’à la marque de fichier sont lues et la fonction échoue. (La fonction GetLastError retourne un code d’erreur indiquant le type de marque de fichier rencontré.) Le système d’exploitation déplace la bande au-delà de la marque de fichier, et une application peut appeler ReadFile de nouveau pour continuer la lecture.

ReadFile et WriteFile lire et écrire uniquement le flux de données. Les fonctions BackupRead et BackupWrite lisent et écrivent tous les flux associés à un fichier. Il s’agit notamment de données, d’attributs étendus, de sécurité et de flux de données alternatifs. La sécurité et les autres flux de données sont pertinents uniquement sur la partition du système de fichiers NTFS.

La fonctionBackupSeekrecherche dans un fichier initialement accessible 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 de 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 pas ou n’écrivent pas de caractéristiques de fichier 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.