Input e output del nastro
Esistono diverse funzioni che le applicazioni possono usare per eseguire input e output (I/O) in un'unità nastro. L'I/O su nastro è simile all'I/O eseguita su un dispositivo di comunicazione.
Quando si esegue l'I/O su nastro, alcune unità nastro archiviano le informazioni sul firmware del nastro nei primi blocchi su un nastro, in genere usando alcune parti dei primi 100 blocchi. Le applicazioni non devono usare tali blocchi. Informazioni più specifiche su questo argomento sono disponibili dai singoli produttori di sistemi a nastro. In generale, un'applicazione che ignora i primi 100 blocchi su un nastro eviterà le idioincrone dell'unità nastro.
Le funzioni GetTapePosition e SetTapePosition recuperano e spostano la posizione corrente del nastro. La funzione WriteTapemark scrive un numero specificato di contrassegni, segni di file, segni di file brevi e segni di file lunghi. La funzione EraseTape cancella tutto o parte di un nastro.
Le funzioni ReadFile e WriteFile leggono e scrivono i dati dei file da e sul nastro. I dati sono letti e scritti in blocchi completi. Se la dimensione del blocco del nastro è di 512 byte, tutte le operazioni di lettura e scrittura devono usare buffer che sono semplici multipli integer di tale dimensione del blocco: 512, 1024, 1536, 2048 e così via. La maggior parte, se non tutte, le unità consentono solo un'operazione di scrittura dopo che il nastro viene riavvolto o dopo che un'operazione di lettura genera un messaggio di errore di fine dei dati.
Per leggere o scrivere dati di file da o verso un nastro in modalità blocco a lunghezza variabile, seguire questa procedura:
- Determinare se l'unità nastro supporta la modalità a blocchi a lunghezza variabile chiamando la funzione GetTapeParameters e controllando il bit TAPE_DRIVE_VARIABLE_BLOCK bit del membro FeaturesLow della struttura TAPE_GET_DRIVE_PARAMETERS restituita.
- Specificare la modalità dimensione blocco variabile chiamando la funzione SetTapeParameters, impostando il membro BlockSize della struttura TAPE_edizione StandardT_MEDIA_PARAMETERS su zero. Usare quindi ReadFile o WriteFile per leggere o scrivere i dati del file.
Se ReadFile rileva un segno di file, i dati fino al segno di file sono letti e la funzione ha esito negativo. (L'oggetto La funzione GetLastError restituisce un codice di errore che indica il tipo di segno di file rilevato. Il sistema operativo sposta il nastro oltre il segno di file e un'applicazione può chiamare di nuovo ReadFile per continuare la lettura.
ReadFile e WriteFile leggono e scrivono solo il flusso di dati. Le funzioni BackupRead e BackupWrite leggono e scrivono tutti i flussi associati a un file. Questi includono dati, attributi estesi, sicurezza e flussi di dati alternativi. I flussi di dati alternativi e di sicurezza sono rilevanti solo nella partizione del file system NTFS.
La funzione BackupSeek cerca in avanti in un file a cui si accede inizialmente da BackupRead o BackupWrite. Questa funzione consente a un'applicazione di ignorare le informazioni che causano errori di accesso.
Se un'applicazione deve accedere solo ai dati del file, deve usare ReadFile e WriteFile. Queste funzioni possono anche leggere flussi di dati alternativi se i flussi sono stati creati usando la funzione CreateFile .
Un'applicazione di backup su nastro deve usare BackupRead e BackupWrite per copiare tutte le informazioni relative a un file. Tuttavia, queste funzioni non leggono o scrivono caratteristiche dei file, ad esempio attributi, ora di creazione di file e così via. Le applicazioni devono usare le funzioni di input e output del file, ad esempio GetFileAttributes e SetFileAttributes, per recuperare e impostare tali valori.