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 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 de uma fita, geralmente usando alguma parte 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 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 recuperam e movem a posição atual da fita. 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, 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:
- Determine se a unidade de fita oferece suporte ao modo de bloco de comprimento variável chamando a função GetTapeParameters e verificando o TAPE_DRIVE_VARIABLE_BLOCK bit do membro FeaturesLow da estrutura de TAPE_GET_DRIVE_PARAMETERS retornada.
- Especifique o modo de tamanho de bloco variável chamando a função SetTapeParameters, definindo o membro BlockSize 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á. (O GetLastError função retorna um código de erro indicando o tipo de marca de arquivo que foi encontrado.) 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 leem e gravam 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. 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 procura avançar em um arquivo acessado inicialmente 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 podem 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, 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.