Freigeben über


Bandein- und -ausgabe

Es gibt mehrere Funktionen, die Anwendungen verwenden können, um Ein- und Ausgabe (E/A) auf einem Bandlaufwerk auszuführen. Band-E/A ähnelt der E/A-Ausführung auf einem Kommunikationsgerät.

Beim Ausführen 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. Genauere Informationen zu diesem Thema erhalten Sie bei den einzelnen Bandsystemherstellern. Im Allgemeinen vermeidet eine Anwendung, die die ersten 100 Blöcke auf einem Band überspringt, bandinterne Eigenheiten.

Die Funktionen GetTapePosition und SetTapePosition rufen die aktuelle Bandposition ab und verschieben sie. Die WriteTapemark-Funktion schreibt eine angegebene Anzahl von Setmarkierungen, Dateimarkierungen, kurzen Dateizeichen und langen Dateizeichen. Die EraseTape-Funktion löscht ein Band ganz oder teilweise.

Die Funktionen ReadFile und WriteFile lesen und schreiben Dateidaten von und auf das Band. Die Daten werden in vollständigen Blöcken gelesen und geschrieben. Wenn die Blockgröße des Bandes 512 Bytes beträgt, müssen alle Lese- und Schreibvorgänge Puffer verwenden, die einfache ganzzahlige Vielfache dieser Blockgröße sind: 512, 1024, 1536, 2048 usw. Die meisten, wenn nicht alle Laufwerke lassen einen Schreibvorgang nur zu, nachdem das Band neu gewickelt wurde oder nachdem ein Lesevorgang eine Fehlermeldung zum Ende der Daten erzeugt.

Führen Sie zum Lesen oder Schreiben von Dateidaten auf oder von einem Band im Blockmodus mit variabler Länge die folgenden Schritte aus:

  1. Ermitteln Sie, ob das Bandlaufwerk den Blockmodus mit variabler Länge unterstützt, indem Sie die GetTapeParameters-Funktion aufrufen und das TAPE_DRIVE_VARIABLE_BLOCK Bit des FeaturesLow-Elements der zurückgegebenen TAPE_GET_DRIVE_PARAMETERS Struktur überprüfen.
  2. Geben Sie den Variablenblockgrößenmodus an, indem Sie die SetTapeParameters-Funktion aufrufen und den BlockSize-Member der TAPE_SET_MEDIA_PARAMETERS-Struktur auf 0 (null) festlegen. Verwenden Sie dann ReadFile oder WriteFile , um die Dateidaten zu lesen oder zu schreiben.

Wenn ReadFile auf ein Filemark trifft, werden die Daten bis zum Filemark gelesen, und die Funktion schlägt fehl. (Die GetLastError-Funktion gibt einen Fehlercode zurück, der den Typ des gefundenen Dateizeichens angibt.) Das Betriebssystem verschiebt das Band über das Filemark, und eine Anwendung kann ReadFile erneut aufrufen, um mit dem Lesen fortzufahren.

ReadFile und WriteFile lesen und schreiben nur den Datenstrom. Die Funktionen BackupRead und BackupWrite lesen und schreiben alle Datenströme, die einer Datei zugeordnet sind. Dazu gehören Daten, erweiterte Attribute, Sicherheit und alternative Datenströme. Die Sicherheitsdatenströme und alternative Datenströme sind nur für die NTFS-Dateisystempartition relevant.

Die BackupSeek-Funktion sucht vorwärts in einer Datei, auf die zuerst von BackupRead oder BackupWrite zugegriffen 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 CreateFile-Funktion 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.