|
|
|
|
Использование блоков управления файлами (FCB)
Обращения к функциям с 0Fh по 29h, введенные в первой версии
операционной системы MS-DOS, используются вместе с блоком управ-
ления файлом (FCB) для создания, модификации и удаления файла.
Блок FCB представляет собой сегмент программы, записанный в памяти, в котором определяются параметры файла, управляемого программой. Операционная система MS-DOS и прикладная программа используют параметры блока FCB для установления местоположения файла, его
сегмента, размера и других сведений об этом файле. Однако, поскольку для действительного создания всего блока FCB не существует обращений ни к каким функциям, блок FCB должен уже быть заранее определен до того, как в программе будут использованы
относящиеся к файлу обращения к функциям. В любом случае, каждое
из обращений к функциям, относящимся к файлу (с 0Fh по 29h), требует того, чтобы адрес памяти, где расположен блок FCB, был бы
загружен в пару регистров DS:DX до начала выполнения функции. Это
значит, что прикладная программа должна сначала создать блок FCB
и загрузить его в известный адрес либо в сегменте данных, либо в
области данных программного сегмента в памяти (в зависимости от
того, что исходно задается программой).
Когда операционная система MS-DOS загружает программу, система создает и форматирует два блока FCB в сегменте программного
префикса (PSP) программы. Адрес этих блоков FCB в префиксе PSP
так же, как средства обращения к префиксу PSP, описываются в главе 3. Поля имен файлов заполняются из информации, вводимой в командной строке при вводе программы (как, например, в таком случае: "A>MUNG infile outfile"). Если, однако, характеристика файла
содержит имя пути доступа, действительным в блоке FCB будет только номер дисковода. Кроме этого, в блоке FCB не будет появляться
никаких директив по переадресации. И, наконец, отметим, что, если
программа открывает первый блок FCB в префиксе PSP, второй блок
FCB перезаписывается.
В таблице 13-10 представлена структура блока FCB и там указываются размеры и смещение адреса в памяти для каждого параметра
в пределах блока FCB. Заметим, что не всеми параметрами в блоке
FCB можно управлять из прикладной программы. Некоторые модифицируются только самой операционной системой MS-DOS, а другие могут
модифицироваться и программой и операционной системой MS-DOS. В
любом случае при создании FCB следует предусматривать место для
всех параметров.
В таблице 13-10 поля с отрицательными смещениями используются при работе под управлением версий 2.0 и старше операционной
системы MS-DOS, для превращения блока FCB в расширенный блок FCB,
который позволяет вам использовать параметр атрибута файла в смещении "-1". Значение 0FFh должно располагаться в смещении - 7 для
того, чтобы блок FCB был бы обозначен, как расширенный блок FCB.
Таблица 13-10
Формат блока FCB операционной системы MS-DOS
њњњњњњњњњњњљњњњњњњњњњљњњњњњњњњњњњњњњњњњњњњњљњњњњњњњњњњњњњњњњњњњњ
Байт ‹ Размер ‹ Описание‹ Модифицируется
смещения ‹‹ ‹
њњњњњњњњњњњќњњњњњњњњњќњњњњњњњњњњњњњњњњњњњњњќњњњњњњњњњњњњњњњњњњњњ
- 7 ‹ 1 ‹ Шестнадцатиричное ‹ Программой
‹‹ значение 0FF ‹
- 6 ‹ 6 ‹ Зарезервировано ‹ Программой
‹‹ (должен быть нуль) ‹
- 1 ‹ 1 ‹ Атрибут файла ‹ Программой и
‹‹ ‹ операционной
‹‹ ‹ системой MS-DOS
0 ‹ 1 ‹ Номер дисковода (от ‹ Программой
‹‹ 0 до 16) ‹ операционной
‹‹ ‹ системой MS-DOS
1 ‹ 8 ‹ Имя файла или ‹ Программой
‹‹ устройства ‹
9 ‹ 3 ‹ Расширение файла ‹ Программой
‹‹ или его тип‹
12 ‹ 2 ‹ Текущий блок ‹ Программой
14 ‹ 2 ‹ Размер записи в ‹
‹‹ байтах ‹
16 ‹ 4 ‹ Размер файла в ‹ Операционной
‹‹ байтах ‹ системой MS-DOS
20 ‹ 2 ‹ Дата ‹ Операционной
‹‹ ‹ системой MS-DOS
22 ‹ 10 ‹ Зарезервировано ‹ Операционной
‹‹ ‹ системой MS-DOS
32 ‹ 1 ‹ Текущая запись ‹ Программой
‹‹ ‹ операционной
‹‹ ‹ системой MS-DOS
33 ‹ 4 ‹ Номер произвольной ‹ Программой
‹‹ записи ‹ операционной
‹‹ ‹ системой MS-DOS
њњњњњњњњњњњ™њњњњњњњњњ™њњњњњњњњњњњњњњњњњњњњњ™њњњњњњњњњњњњњњњњњњњњ
|
Значения смещения и размера записи задаются в десятичном виде.
|
|