Compartilhar via


Entrada e saída de fita

Há várias funções que os aplicativos podem usar para executar E/S (entrada e saída) em uma unidade de fita. A E/S de fita é semelhante à E/S executada em um dispositivo de comunicação.

Ao executar a E/S de fita, algumas unidades de fita armazenam informações de firmware de fita nos primeiros blocos em uma fita, normalmente usando algumas partes dos primeiros 100 blocos. Os aplicativos não devem usar esses blocos. Informações mais específicas sobre esse assunto estão disponíveis em fabricantes individuais do sistema de fitas. Em geral, um aplicativo que ignora os primeiros 100 blocos em uma fita evitará idiossincrasias de unidade de fita.

As funções GetTapePosition e SetTapePosition recuperam e movem a posição da fita atual. A função WriteTapemark grava um número especificado de setmarks, marcas de arquivo, marcas de arquivo curtas e marcas de arquivo longas. A função EraseTape apaga toda ou parte de uma fita.

As funções ReadFile e WriteFile leem e gravam dados de arquivo de e para a fita. Os dados são lidos e gravados em blocos completos. Se o tamanho do bloco da fita for de 512 bytes, todas as operações de leitura e gravação deverão usar buffers que sejam múltiplos inteiros simples desse tamanho de bloco: 512, 1024, 1536, 2048 e assim por diante. A maioria, se não todas, unidades só permitem uma operação de gravação depois que a fita é relançada ou depois que uma operação de leitura produz uma mensagem de erro de fim de dados.

Para ler ou gravar dados de arquivo de ou para uma fita no modo de bloco de comprimento variável, execute as seguintes etapas:

  1. Determine se a unidade de fita dá suporte ao modo de bloco de comprimento variável chamando a função GetTapeParameters e verificando o bit TAPE_DRIVE_VARIABLE_BLOCK do membro FeaturesLow da estrutura de TAPE_GET_DRIVE_PARAMETERS retornada.
  2. Especifique o modo de tamanho de bloco variável chamando a função SetTapeParameters, definindo o BlockSize membro da estrutura TAPE_SET_MEDIA_PARAMETERS como zero. Em seguida, use readFile ou WriteFile para ler ou gravar os dados do arquivo.

Se ReadFile encontrar uma marca de arquivo, os dados até a marca de arquivo serão lidos e a função falhará. (A função GetLastError retorna um código de erro que indica o tipo de marca de arquivo encontrado.) O sistema operacional move a fita para além da marca de arquivo e um aplicativo pode chamar ReadFile novamente para continuar a leitura.

ReadFile e WriteFile ler e gravar somente o fluxo de dados. As funções BackupRead e BackupWrite leem e gravam todos os fluxos associados a um arquivo. Isso inclui dados, atributos estendidos, segurança e fluxos de dados alternativos. Os fluxos de dados alternativos e de segurança são relevantes apenas na partição do sistema de arquivos NTFS.

A função BackupSeek busca encaminhar em um arquivo inicialmente acessado por BackupRead ou BackupWrite. Essa função permite que um aplicativo ignore informações que causam erros de acesso.

Se um aplicativo precisar acessar apenas os dados do arquivo, ele deverá usar ReadFile e WriteFile. Essas funções também poderão ler fluxos de dados alternativos se os fluxos foram criados usando a função CreateFile.

Um aplicativo de backup em fita deve usar backupread e backupWrite para copiar todas as informações referentes a um arquivo. No entanto, essas funções não leem ou gravam características de arquivo, como atributos, hora de criação de arquivo e assim por diante. Os aplicativos devem usar as funções de entrada e saída do arquivo, como GetFileAttributes e SetFileAttributes, para recuperar e definir esses valores.