Partilhar via


Entrada e saída de fita

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

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

As funções GetTapePosition e SetTapePosition recuperar e mover a posição atual da fita. A funçãoWriteTapemark grava um número especificado de setmarks, filemarks, filemarks curtos e long filemarks. A função EraseTape apaga toda ou parte de uma fita.

As funções ReadFile e WriteFile ler e gravar dados de arquivos 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, as unidades só permitem uma operação de gravação depois que a fita é rebobinada 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 suporta o modo de bloco de comprimento variável chamando a funçãoGetTapeParameterse verificando o TAPE_DRIVE_VARIABLE_BLOCK bit do FeaturesLow membro da estrutura de TAPE_GET_DRIVE_PARAMETERS retornada.
  2. Especifique o modo de tamanho de bloco variável chamando a funçãoSetTapeParameters, 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 que foi encontrada.) O sistema operacional move a fita 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 ler e gravar todos os fluxos associados a um arquivo. Isso inclui dados, atributos estendidos, segurança e fluxos de dados alternativos. A segurança e os fluxos de dados alternativos são relevantes apenas na partição do sistema de arquivos NTFS.

A função BackupSeek busca encaminhamento em um arquivo acessado inicialmente pelo BackupRead ou BackupWrite. Esta 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 deve usar ReadFile e WriteFile. Essas funções também podem ler fluxos de dados alternativos se os fluxos foram criados usando a funçãoCreateFile.

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