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 funzioneWriteTapemarkscrive un numero specificato di segni di impostazione, segni di file, segni di file brevi e segni di file lunghi. La funzione EraseTape cancella tutto o parte di un nastro.
IlReadFilee WriteFile funzioni di lettura e scrittura di dati di file da e verso il 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 funzioneGetTapeParameterse controllando il bit TAPE_DRIVE_VARIABLE_BLOCK del FeaturesLow membro della struttura di TAPE_GET_DRIVE_PARAMETERS restituita.
- Specificare la modalità di dimensione del blocco variabile chiamando la funzioneSetTapeParameters, impostando il membro BlockSize della struttura TAPE_SET_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 non riesce. La funzioneGetLastErrorrestituisce 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 ReadFile di nuovo per continuare la lettura.
ReadFile e WriteFile di lettura e scrittura solo il flusso di dati. Le funzioni diBackupReade 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 funzioneBackupSeekcerca 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.