Bandeingabe und -ausgabe
Es gibt mehrere Funktionen, mit denen Anwendungen Eingabe und Ausgabe (E/A) auf einem Bandlaufwerk ausführen können. Band-E/A ist mit E/A vergleichbar, die auf einem Kommunikationsgerät ausgeführt werden.
Bei der Durchführung von Band-E/A speichern einige Bandlaufwerke Bandfirmwareinformationen in den ersten Blöcken auf einem Band, wobei in der Regel ein Teil der ersten 100 Blöcke verwendet wird. Anwendungen sollten diese Blöcke nicht verwenden. Spezifischere Informationen zu diesem Thema finden Sie von einzelnen Bandsystemherstellern. Im Allgemeinen wird eine Anwendung, die die ersten 100 Blöcke auf einem Band überspringt, keine Bandlaufwerk-Idiosyncrasies vermeiden.
Die GetTapePosition und SetTapePosition Funktionen rufen die aktuelle Bandposition ab und verschieben sie. Die WriteTapemark--Funktion schreibt eine angegebene Anzahl von Setmarks, Dateizeichen, kurzen Dateizeichen und langen Dateizeichen. Die EraseTape Funktion löscht alle oder einen Teil eines Bandes.
Die ReadFile- und WriteFile- Funktionen lesen und schreiben Dateidaten aus und in das Band. Die Daten werden in vollständigen Blöcken gelesen und geschrieben. Wenn die Blockgröße des Bandes 512 Byte beträgt, müssen alle Lese- und Schreibvorgänge Puffer verwenden, die einfache ganzzahlige Vielfache dieser Blockgröße sind: 512, 1024, 1536, 2048 usw. Wenn nicht alle Laufwerke nur einen Schreibvorgang zulassen, nachdem das Band neu gewobt wurde oder nach einem Lesevorgang eine Fehlermeldung zu Ende der Daten erzeugt wird.
Führen Sie die folgenden Schritte aus, um Dateidaten in oder aus einem Band im Blockmodus variabler Länge zu lesen oder aus einem Band zu schreiben:
- Ermitteln Sie, ob das Bandlaufwerk den Blockmodus variabler Länge unterstützt, indem Sie die GetTapeParameters--Funktion aufrufen und das TAPE_DRIVE_VARIABLE_BLOCK Bit des FeaturesLow Member der zurückgegebenen TAPE_GET_DRIVE_PARAMETERS Struktur überprüfen.
- Geben Sie den Variablenblockgrößenmodus an, indem Sie die SetTapeParameters--Funktion aufrufen, indem Sie den BlockSize Member der TAPE_SET_MEDIA_PARAMETERS-Struktur auf Null festlegen. Verwenden Sie dann ReadFile- oder WriteFile-, um die Dateidaten zu lesen oder zu schreiben.
Wenn ReadFile- auf ein Dateizeichen trifft, werden die Daten bis zum Dateizeichen gelesen, und die Funktion schlägt fehl. (Die GetLastError-Funktion gibt einen Fehlercode zurück, der den Typ des aufgetretenen Dateizeichens angibt.) Das Betriebssystem verschiebt das Band über das Dateizeichen, und eine Anwendung kann ReadFile- erneut aufrufen, um den Lesevorgang fortzusetzen.
ReadFile- und WriteFile nur den Datenstrom lesen und schreiben. Die BackupRead und BackupWrite Funktionen lesen und schreiben alle Datenströme, die einer Datei zugeordnet sind. Dazu gehören Daten, erweiterte Attribute, Sicherheit und alternative Datenströme. Die Sicherheits- und alternativen Datenströme sind nur für die NTFS-Dateisystempartition relevant.
Die BackupSeek--Funktion sucht in einer Datei, auf die zunächst von BackupRead oder BackupWritezugegriffen wird. Mit dieser Funktion kann eine Anwendung Informationen überspringen, die Zugriffsfehler verursachen.
Wenn eine Anwendung nur auf die Dateidaten zugreifen muss, sollte sie ReadFile- und WriteFile-verwenden. Diese Funktionen können auch alternative Datenströme lesen, wenn die Datenströme mithilfe der funktion CreateFile erstellt wurden.
Eine Bandsicherungsanwendung muss BackupRead- und BackupWrite- verwenden, um alle Informationen zu einer Datei zu kopieren. Diese Funktionen lesen oder schreiben jedoch keine Dateimerkmale wie Attribute, Dateierstellungszeit usw. Anwendungen müssen die Dateieingabe- und Ausgabefunktionen wie GetFileAttributes und SetFileAttributes-verwenden, um diese Werte abzurufen und festzulegen.