Profi+ BDOS. Руководство программиста. 1993 г.

Блок управления файлом - атрибуты файла, области пользователя.


2.3.1 Блок управления файлом (БУФ)

БУФ - это структура данных, которая организуется и
инициализируется транзитной программой, а также используется
файловой системой при доступе к файлам через оглавление. Все
операции с файлами обращаются за исходной информацией к БУФ.
Система хранит текущее состояние файла в БУФ во время исполнения
файловых операций. Кроме того, операции произвольного доступа
используют 3 байта, следующие за БУФ, для определения номера
произвольной записи.

При вызове операций, осуществляющих доступ к файлам или
оглавлению, регистры D&E должны содержать БУФ, указывающего на
файл или файлы, скоторыми должна производится операция. Для
большинства операций длина БУФ равна 33 байт, а для операций
произвольного доступа, вычисление размера файла и свободного места
на диске размер БУФ равен 36 байт.

Формат БУФ и назначение его полей приведены ниже.

где: байт 0: ДС код диска (0-16)

0 - выбор текущего диска

1 - выбор диска А

2 - выбор диска В

16- выбор диска Р

байты 1-8:И1...И8 содержат имя файла в символах верхнего

латинского регистра. Старшие биты позиций
И5-И8 могут использоваться системой и не
должны использоваться прикладной
программой. Старшие биты позиций И1-И4
могут использоваться прикладной программой
для внутренних атрибутов,
байты 9-11:Ф1...ФЗ содержат тип файла в символах верхнего
латинского регистра. Старшие биты позиций
используются системой для атрибутов файла и
не должны использоваться прикладными
программами в других целях
ФГ=1 (старший бит байта Ф1) обозначает файл R

(только для чтения)
Ф2,==1 обозначает файл типа S (системный)

байт 12: ЗК содержит номер текущего экстента, обычно

устанавливается в 0 вызывающей программой.
Может изменятся от 0 до 31 в процессе обмена
с файлом

байт 13: С1 счетчик байтов (число записей в последней

записи файла).Должен устанавливаться
прикладными программами
байт 14: С2 резервируется для системы

байт 15: СЧ счетчик записей для экстента "ЗК". Принимает

значения от 0 до 128
байты 18-31: B0-BN резервируются для системы. Содержат номера

блоков, занимаемых файлом,
байт 32: ТЗ текущая запись для обмена с файлом в

последовательном режиме. Обычно должна
устанавливаться в 0 вызывающей программой
при создании или открытии файла
байты 33-35: R0,R1,R2 номер произвольной записи от 0-65535.

Используется только в произвольном режиме
доступа к файлу: младший байт R0, старший -
Rl,6ato R2 содержит признак переполнения

Для операций доступа к оглавлению вызывающая программа перед
вызовом операции должна инициализировать байты 0-11 БУФ.
Операция переименования файла требует, чтобы новое имя было
помещено в байты 17-27 БУФ. Перед вызовом операций открытия и
создания файла вызывающая программа должна инициализировать
байты 0-12 БУФ. Обычно байт 12 устанавливается в 0. Кроме того, если
работа с файлом будет осуществлятся с начала файла в
последовательном режиме, то перед началом работы байт 32 (ТЗ)
должен быть установлен в 0. После того, как БУФ активизирован
операцией открытия или создания файла, программа не должна
модифицировать его. Исключение составляют байты 33-35 (R0, Rl, R2),
в которых программа может устанавливать номер произвольной записи
для режима произвольного доступа.

Элементы оглавления (экстенты) для каждого файла по формату
совпадают с БУФ (без байтов 33 ...35), за исключением того что байт 0
элемента оглавления содержит не ссылку на диск, а код пользователя.
При операциях открытия и создания файла элемент оглавления
помещается в память по заданному адресу. Все операции чтения или
записи должны вызываться с указанием адреса БУФ,
активизированного таким образом. При обработке файла БДОС
корректирует поля БУФ, отображая текущую позицию в файле.
Операция закрытия файла обеспечивает запись измененное БУФ в
оглавление. Необходимо подчеркнуть, что при записи файл
информация о выделенных файлу блоках данных на диск не
записывается. Это делается только при исполнении операции закрытия
файла. Поэтому необходимо, чтобы программа, изменяющая
содержымое файла, обязательно вызывала операцию закрытия файла,
иначе данные в файле будут потеряны.

Операции поиска и удаления файлов допускают использование
неявных имен. Символ ? в полях имени, типа или экстента означает
при поиске файла в оглавлении совпадение с любым символом в
данной позиции оглавления. Кроме того, операция поиска при задании
в байте О БУФ символа ? возвращает все элементы оглавления не
зависимо от кода пользователя, включая свободные элементы.
Свободные входы в оглавление содержат в байте 0 код 0Б5Н.

2.3.2 Атрибуты файла

Старшие биты файла (ИГ,...И8') и типа файла (ФГ,...ФЗ') БУФ
содержат атрибуты файла; при этом зачение 1 соответствует
булевскому true (истина) и 0 - false (ложь).

Значения атрибутов следующие:

Ф1: Атрибут "только для чтения" при этом значению 1 соответствует
"только для чтения" (read: R), а 0 - для запей (write: W) и чтения.

Ф2: системный атрибут. Файлы с этим атрибутом в области
пользователя 0 доступны из любой области пользователя в режиме
"только для чтения" с системного диска (диска А:), при этом значению
1 соответствует "системный" (system: S), а значению 0 "несистемный"
(directory: D). '

Атрибуты ИГ,...,И4' могут определятся пользователем.

Интерфейсные атрибуты И5',...,И8' используются системой и не могут
использоватся как атрибуты файла.

2.3.3 Области пользователя

Как уже отмечалось выше, область оглавления каждого диска
разделена на 16 независимых областей, каждой из которых присвоен
код пользователя от 0 до 15. В каждый текущий момент времени
только одна область пользователя доступна вызывающей программе
навсех дисках системы. Эта область может измененяться вызовом
операции БДОС 32 (получение/установка кода пользователя). Область
пользователя с кодом 0 имеет в МикроДОС особое значение. Файловая
система обеспечивает открытие файлов в режиме только для чтения в
этой области (если указанный файл имеет установленный системный
атрибут) в том случае, если в текущей области пользователя
указанный файл отсутствует. Это позволяет использовать программы с
системным атрибутом, находящиеся в области пользователя 0 на
системном диске из любой области пользователя, поэтому нет
необходимости хранить их в каждой 'области пользователя.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Почему - Почему я все еще выбираю Speccy! Спектрум компьютер для бедных?
Авторы
Inferno - Об оболочке.
События - демопати MilleniuM. Новая информация.
Лит. Страничка - головная боль полковника хауэлла или "Объвляю заседание открытым" (окончание).

В этот день...   24 ноября