Entrada y salida de cinta
Hay varias funciones que las aplicaciones pueden usar para realizar entradas y salidas (E/S) en una unidad de cinta. La E/S de cinta es similar a la E/S realizada en un dispositivo de comunicaciones.
Al realizar la E/S de cinta, algunas unidades de cinta almacenan información de firmware de cinta en los primeros bloques de una cinta, normalmente usando algunas partes de los primeros 100 bloques. Las aplicaciones no deben usar esos bloques. Hay información más específica sobre este tema disponible en fabricantes de sistemas de cintas individuales. En general, una aplicación que omite los primeros 100 bloques de una cinta evitará las idiosincrasias de unidad de cinta.
Las funciones de GetTapePosition y SetTapePosition recuperan y mueven la posición actual de la cinta. La función WriteTapemark escribe un número especificado de marcas de conjunto, marcas de archivo, marcas de archivo cortas y marcas de archivo largas. La función EraseTape borra todo o parte de una cinta.
Las funcionesreadFiley WriteFile leen y escriben datos de archivo desde y en la cinta. Los datos se leen y escriben en bloques completos. Si el tamaño de bloque de la cinta es de 512 bytes, todas las operaciones de lectura y escritura deben usar búferes que son múltiples enteros simples de ese tamaño de bloque: 512, 1024, 1536, 2048, etc. La mayoría, si no todas, las unidades solo permiten una operación de escritura después de que la cinta se reenwound o después de que una operación de lectura genere un mensaje de error de fin de datos.
Para leer o escribir datos de archivo en una cinta en modo de bloque de longitud variable, realice los pasos siguientes:
- Determine si la unidad de cinta admite el modo de bloque de longitud variable llamando a la funciónGetTapeParameters y comprobando el bit TAPE_DRIVE_VARIABLE_BLOCK del FeaturesLow miembro de la estructura de TAPE_GET_DRIVE_PARAMETERS devuelta.
- Especifique el modo de tamaño de bloque variable llamando a la funciónSetTapeParameters, estableciendo el miembro BlockSize de la estructura de TAPE_SET_MEDIA_PARAMETERS en cero. A continuación, use readFile o writeFile para leer o escribir los datos del archivo.
Si ReadFile encuentra una marca de archivo, los datos hasta la marca de archivo se leen y se produce un error en la función. (La funciónGetLastErrordevuelve un código de error que indica el tipo de marca de archivo que se encontró). El sistema operativo mueve la cinta más allá de la marca de archivo y una aplicación puede llamar a ReadFile de nuevo para continuar leyendo.
ReadFile y WriteFile leer y escribir solo el flujo de datos. Las funciones BackupRead y BackupWrite leen y escriben todas las secuencias asociadas a un archivo. Estos incluyen datos, atributos extendidos, seguridad y flujos de datos alternativos. La seguridad y los flujos de datos alternativos solo son relevantes en la partición del sistema de archivos NTFS.
La funciónBackupSeek busca hacia delante en un archivo al que se accede inicialmente BackupRead o BackupWrite. Esta función permite a una aplicación omitir la información que provoca errores de acceso.
Si una aplicación necesita tener acceso solo a los datos de archivo, debe usar ReadFile y WriteFile. Estas funciones también pueden leer flujos de datos alternativos si los flujos se crearon mediante la función CreateFile.
Una aplicación de copia de seguridad de cinta debe usar backupRead y backupWrite para copiar toda la información relacionada con un archivo. Sin embargo, estas funciones no leen ni escriben características de archivo, como atributos, tiempo de creación de archivos, etc. Las aplicaciones deben usar las funciones de entrada y salida de archivos, como GetFileAttributes y SetFileAttributes, para recuperar y establecer esos valores.