Udostępnij przez


Wejście i wyjście taśmy

Istnieje kilka funkcji, których aplikacje mogą używać do wykonywania operacji wejścia i wyjścia (we/wy) na stacji taśm. Operacje we/wy taśmy są podobne do operacji we/wy wykonywanych na urządzeniu komunikacyjnym.

Podczas wykonywania operacji we/wy taśm niektóre stacje taśm przechowują informacje o oprogramowaniu układowym taśmy w kilku pierwszych blokach na taśmie, zazwyczaj przy użyciu niektórych części pierwszych 100 bloków. Aplikacje nie powinny używać tych bloków. Bardziej szczegółowe informacje na ten temat są dostępne od poszczególnych producentów systemów taśmowych. Ogólnie rzecz biorąc, aplikacja, która pomija pierwsze 100 bloków na taśmie, pozwoli uniknąć idiosyncrasies stacji taśm.

Funkcje GetTapePosition i SetTapePosition pobierają i przenoszą bieżącą pozycję taśmy. Funkcja WriteTapemark zapisuje określoną liczbę znaków setmark, filemarks, krótkich znaków plików i długich znaków plików. Funkcja EraseTape usuwa wszystkie lub część taśmy.

Funkcje ReadFile i WriteFile odczytują i zapisują dane plików z i na taśmie. Dane są odczytywane i zapisywane w kompletnych blokach. Jeśli rozmiar bloku taśmy wynosi 512 bajtów, wszystkie operacje odczytu i zapisu muszą używać, które są prostą liczbą całkowitą tego rozmiaru bloku: 512, 1024, 1536, 2048 itd. Większość, jeśli nie wszystkie, dyski zezwalają tylko na operację zapisu po ponownym uruchomieniu taśmy lub po operacji odczytu powoduje wyświetlenie komunikatu o błędzie końca danych.

Aby odczytywać lub zapisywać dane pliku do lub z taśmy w trybie bloku o zmiennej długości, wykonaj następujące kroki:

  1. Ustal, czy stacja taśm obsługuje tryb blokowy o zmiennej długości, wywołując funkcję GetTapeParameters i sprawdzając bit TAPE_DRIVE_VARIABLE_BLOCK funkcji Właściwości składowej zwróconej struktury TAPE_GET_DRIVE_PARAMETERS.
  2. Określ tryb zmiennego rozmiaru bloku, wywołując funkcję SetTapeParameters, ustawiając element członkowski BlockSize struktury TAPE_SET_MEDIA_PARAMETERS na zero. Następnie użyj ReadFile lub WriteFile, aby odczytywać lub zapisywać dane pliku.

Jeśli plik ReadFile napotka znacznik pliku, dane do znacznika plików są odczytywane i funkcja kończy się niepowodzeniem. (Funkcja GetLastError zwraca kod błędu wskazujący typ napotkanego znacznika plików). System operacyjny przenosi taśmę obok znacznika plików, a aplikacja może wywołać ReadFile ponownie, aby kontynuować odczytywanie.

ReadFile i WriteFile odczytywać i zapisywać tylko strumień danych. Funkcje BackupReadread i BackupWrite odczytują i zapisują wszystkie strumienie skojarzone z plikiem. Obejmują one dane, atrybuty rozszerzone, zabezpieczenia i alternatywne strumienie danych. Zabezpieczenia i alternatywne strumienie danych są istotne tylko na partycji systemu plików NTFS.

Funkcja BackupSeek szuka danych do przodu w pliku, do których początkowo uzyskuje dostęp BackupRead lub BackupWrite. Ta funkcja umożliwia aplikacji pomijanie informacji, które powodują błędy dostępu.

Jeśli aplikacja musi uzyskać dostęp tylko do danych plików, powinna używać ReadFile i WriteFile. Te funkcje mogą również odczytywać alternatywne strumienie danych, jeśli strumienie zostały utworzone przy użyciu funkcji CreateFile.

Aplikacja do tworzenia kopii zapasowej na taśmie musi używać BackupRead i BackupWrite, aby skopiować wszystkie informacje dotyczące pliku. Jednak te funkcje nie odczytują ani nie zapisują cech plików, takich jak atrybuty, czas tworzenia pliku itd. Aplikacje muszą używać funkcji wejściowych i wyjściowych plików, takich jak GetFileAttributes i SetFileAttributes, aby pobrać i ustawić te wartości.