Criando um aplicativo de backup
Para executar a entrada ou saída em uma fita, um aplicativo de backup deve primeiro obter um identificador do dispositivo de fita. O exemplo de código a seguir mostra como usar a função CreateFile para abrir um dispositivo de fita.
HANDLE hTape; // handle to tape device
hTape = CreateFile(TEXT("\\\\.\\TAPE0"), // tape dev to open
GENERIC_READ | GENERIC_WRITE, // read/write access
0, // not used
0, // not used
OPEN_EXISTING, // req for tape devs
0, // not used
NULL); // not used
Para fazer backup de uma árvore de diretórios em uma fita, um aplicativo deve usar as funções FindFirstFile e FindNextFile para percorrer a árvore de diretórios. Cada vez que um arquivo é encontrado, o aplicativo deve obter os atributos de arquivo usando a função GetFileAttributes.
Se houver links físicos, um aplicativo deve determinar o número de links e salvar o identificador exclusivo do arquivo em uma tabela para comparações futuras. Na primeira vez que um arquivo é encontrado, o aplicativo deve usar CreateFile para abrir o arquivo e a função BackupRead para iniciar o backup. Em seguida, ele pode usar a função WriteFile repetidamente para transferir todas as informações no buffer usado pelo BackupRead para a fita. Na segunda vez que um arquivo é encontrado (verificado em relação à tabela de identificadores de arquivo quando há links físicos), o aplicativo pode gravar as informações gerais do arquivo na fita, seguido por um fluxo que tem um identificador que é BACKUP_LINK.
Ao restaurar arquivos de fita para disco, um aplicativo deve usar as funções CreateFile, BackupWrite e ReadFile. Para cada arquivo em uma fita, o aplicativo deve usar CreateFile para criar um novo arquivo no disco e BackupWrite para começar a restaurar o arquivo. Em seguida, o aplicativo deve usar ReadFile repetidamente até que todas as informações do arquivo sejam lidas da fita para o buffer preenchido por BackupWrite.
Se um dos fluxos no buffer BackupWrite tiver um identificador de fluxo BACKUP_LINK, o aplicativo deverá estabelecer um link físico. Se os dados necessários para estabelecer o link não existirem, o BackupWrite falhará. O aplicativo pode usar um catálogo pré-existente para localizar e restaurar os dados originais ou pode notificar o usuário de que os dados do arquivo a serem restaurados estão em um local diferente.