Студопедия — КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ. Уже в MSDOS 2.0, вместе с усовершенствованием FAT (на­пример, появлением вложенных директорий), появился набор UNIX-подобных функций работы с файлами
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ. Уже в MSDOS 2.0, вместе с усовершенствованием FAT (на­пример, появлением вложенных директорий), появился набор UNIX-подобных функций работы с файлами






Уже в MSDOS 2.0, вместе с усовершенствованием FAT (на­пример, появлением вложенных директорий), появился набор UNIX-подобных функций работы с файлами, использующих для описания файла всего одно 16-битное число, идентификатор файла или устройства. Все остальные функции ра­боты с файлами используют затем только это число. Первые пять идентификато­ров инициализируются системой следующим образом:

0: STDIN - стандартное устройство ввода (обычно клавиатура);

1: STDOUT - стандартное устройство вывода (обычно экран);

2: STDERR - устройство вывода сообщений об ошибках (всегда экран);

3: AUX- последовательный порт (обычно СОМ1);

4: PRN- параллельный порт (обычно LPT1);

так что функции чтения/записи (а также сброс буферов на диск) файлов можно применять и к устройствам.

Создание и открытие файлов

Функция DOS3Ch: Создать файл

Вход: AH-3Ch

СХ - атрибут файла

DS: DX - адрес ASCIZ-строки с полным именем файла (ASCIZ-строка ASGII-символов, оканчивающаяся нулем) Выход: CF - 0 и АХ - идентификатор файла, если не произошла ошибка

CF -> 1 и АХ - 03h, если путь не найден

CF - 1 и АХ - 04h, если слишком много открытых файлов

CF - 1 и АХ - 05h, если доступ запрещен

Если файл уже существует, функция 3Ch все равно открывает его, присваивая ему нулевую длину. Чтобы этого не произошло, следует пользоваться функцией 5Bh.

Функция DOS 3Dh: Открыть существующий файл

Вход: АН - 3Dh

AL - режим доступа '

DS: DX = адрес ASCIZ-строки с полным именем файла CL = маска атрибутов файлов

Выход: CF- 0 и АХ «идентификатор файла, если не произошла ошибка

CF = 1 и АХ = код ошибки (02h - файл не найден, 03h - путь не найден, 04h - слишком много открытых файлов, 05h - доступ запрещен, 0Ch - неправильный режим доступа)

Функция DOS 5Bh: Создать и открыть новый файл

Вход: АН = 5ВЬ

СХ = атрибут файла

DS: DX ~" адрес ASCIZ-строки с полным именем файла Выход: CF = 0 р АХ = идентификатор файла, открытого для чтения/записи в режиме совместимости, если не произошла ошибка

CF = 1 и АХ = код ошибки (ОЗЬ - путь не найден, 04h - слишком мно­го открытых файлов, 05Ь - доступ запрещен, 50Ь - файл уже существует)

Функция DOS 5Ah: Создать и открыть временный файл

Вход: АН - 5АЬ

СХ = атрибут файла /DS.DX «адрес ASCIZ-строки с путем, оканчивающимся символом \, и тринадцатью нулевыми байтами в конце

Выход: CF = 0 и АХ - идентификатор файла, открытого для чтения/записи в режиме совместимости, если не произошла ошибка (в строку по адресу DS: DX дописывается имя файла)

CF =1 и АХ - код ошибки

(03h - путь не найден, 04h - слишком много открытых файлов, 05h - доступ запрещен)

filespec db.'c: \data\filename.ext\0

причем, если диск или путь опущены, используются их текущие значения.

Для работы с длинными именами файлов в DOS 7.0 (Windows 95) и старше используются дополнительные функции, которые вызываются так же, как функ­ция DOS 71Ь.

Функция LFN6Ch: Создать или открыть файл с длинным именем

Вход: АХ - 716Ch

СХ = атрибут файла

DX - действие

DS: SI = адрес ASCIZ-строки с именем файла

DI = число, которое будет записано в конце короткого варианта имени

файла Выход: CF == 0

АХ - идентификатор файла

СХ = 1, если файл открыт

СХ = 2, если файл создан

СХ = 3, если файл заменен CF - 1, если произошла ошибка

АХ = код ошибки (7100h, если функция не поддерживается)

Если функции открытия файлов возвращают ошибку «слишком много откры­тых файлов» (АХ - 4), следует увеличить число допустимых идентификаторов с помощью функции 67h.

Функция DOS 67h: Изменить максимальное число идентификаторов файлов Вход: АН - 67h

ВХ - новое максимальное число идентификаторов (20-65 535) Выход: CF - 0, если не произошла ошибка

CF - 1 и АХ - код ошибки, если Произошла ошибка (например: 04h, если заданное число меньше, чем количество уже от­крытых файлов, или 08h; если DOS не хватает памяти для новой таблицы идентификаторов)

Следует помнить, что все дочерние процессы будут наследовать только пер­вые 20 идентификаторов и должны вызывать функцию 67h сами, если им требу­ется больше.

Чтениеи запись в файл

Функция DOS 3Fh: Чтение из файла или устройства

Вход: АН = 3Fh

ВХ - идентификатор СХ - число байтов

DS.DX * адрес буфера для приема данных Выход: CF - 0 и АХ - число считанных байтов, если не было ошибки

CF = 1 и АХ = 05h, если доступ запрещен, 06h, если неправильный идентификатор.

Если при чтении из файла число фактически считанных байтов в АХ меньше, чем заказанное число в СХ, то был достигнут конец файла. Каждая следующая операция чтения, так же как и записи, начинается не с начала файла, а с того бай­та, на котором остановилась предыдущая операция чтения/записи. Если требует­ся считать (или записать) произвольный участок файла, использует функцию 42h (функция lseek в С).

Функция DOS 42h: Переместить указатель чтения/записи

Вход: АН-42h

ВХ = идентификатор

CX: DX - расстояние, на которое надо переместить указатель (со знаком) AL - перемещение:

Выход: CF = 0 и CX: DX - новое значение указателя (в байтах от начала файла), если не произошла ошибка

CF = 1 и АХ = 06h, если неправильный идентификатор

Указатель можно установить за реальными пределами файла: в отрицательное число, тогда следующая операция чтения/записи вызовет ошибку; в положитель­ное число, большее длины файла, тогда очередная операция записи увеличит раз­мер файла. Эта функция также часто используется для определения длины фай­ла - достаточно вызвать ее с

СХ = 0, DX = 0, AL = 2, и в CX: DX будет возвращена длина файла в байтах.

Функция DOS 40k Запись в файл или устройство

Вход: АН = 40h

ВХ - идентификатор СХ - число байтов DS: DX - адрес буфера с данными Выход: CF - 0 и АХ - число записанных байтов, если не произошла ошибка CF - 1 и АХ05h; если доступ запрещай; 06h, если неправильный иден­тификатор

Если при записи; в файл указать СХ - 0, он будет обрезан по текущему значению указателя. На самом деле происходит запись в буфер DOS, данные из которого сбрасываются на диск во время закрытия файла или если их количество превышает размер сектора диска. Для немедленной очистки буфера можно использовать функцию 68h (функция fflush в С).

Функция DOS 68h: Сброс файловых буферов DOS на диск Вход: AH-68h

ВХ - идентификатор

Выход: CF - 0, если операция выполнена

CF - 1, если произошла ошибка (АХ - код ошибки)

Для критических участков программ предпочтительнее использовать более эф­фективную функцию 0Dh.

Функция DOS 0Dh: Сброс всех файловых буферов на диск Вход: АН - 0Dh Выход: Никакого

Закрытие и удаление файла

Функция DOS ЗЕк. Закрыть файл /

Вход: АН - 3Eh

ВХ - идентификатор-Выход: CF ™ 0, если не произошла ошибка

CF = 1 и АХ = 6, если неправильный идентификатор

Если файл был открыт для записи, все файловые буфера сбрасываются на диск, устанавливается время модификации файла и записывается его новая длина.

Функция DOS 41 h; Удаление файла Вход: AH-2lh

DS: DX - адрес ASCIZ-строки с полным именем файла Выход: CF - 0, если файл удален

CF = 1 и АН = 02h, если файл не найден; 03h, если путь не найден; 05h, если доступ запрещен

Функция LFN 41h: Удаление файлов с длинным именем Вход: АХ - 7141h

DS: DX- адрес ASCIZ-строки с длинным именем файлаSI - OOOOh: маски не разрешены и атрибуты в СХ игнорируются

SI- 000th: маски в имени файла и атрибуты в СХ разрешены: CL - атрибуты, которые файлы могут иметь СН - атрибуты, которые файлы должны иметь Выход: CF - 0, если файл или файлы удалены

CF - 1 и АХ - код ошибки, если произошла ошибка. Код 7100h означа­ет, что функция не поддерживается

Поиск файлов

Найти нужный файл на диске намного сложнее, чем просто открыть его, - для этого требуются две функции при работе с короткими именами (найти первый файл и найти следующий файл) и три - при работе с длинными именами в DOS 7.0 (найти первый файл, найти следующий файл, прекратить поиск).

Функция DOS 4Eh: Найти первый файл Вход: АН = 4Eh

'AL используется при обращении к функции APPEND

СХ -= атрибуты, которые должен иметь файл (биты 0 (только для чте­ния) и 5 (архивный бит) игнорируются. Если бит 3 (метка тома) установлен, все остальные биты игнорируются) DS: DX = адрес ASCIZ-строки с именем файла, которое может включать путь и маски для поиска (символы * и?) Выход: CF - 0 и область DTA заполняется данными, если файл найден

CF - 1 и АХ * 02h, если файл не найден; 03h, если путь не найден; 12h, если неправильный режим доступа

Функция DOS 1Ah: Установить область DTA Вход: АН - lAh

DS: DX - адрес начала DTA (128-байтный буфер)

Функции поиска файлов заполняют DTA следующим образом: +00h: байт- биты 0-6: ASCII-код буквы диска

бит 7: диск сетевой +01h; 11 байт - маска поиска (без пути) +0Ch: байт ; - атрибуты для поиска +0Dh: слово - порядковый номер файла в директории +0Fh: слово - номер кластера начала внешней директории +11 h: 4 байта - зарезервировано +15h: байт- атрибут найденного файла +16h: слово - время создания файла в формате DOS:

биты 15-11: час (0-23)

биты 10-5: минута

биты 4-0: номер секунды, деленный на 2 (0—30)

+18h: слово -дата создания файла в формате DOS:

биты 15-9; год, начиная с 1980

биты 8-5: месяц

биты 4-0: день <

+lAh; 4 байта - размер файла

+ lEh: 13 байт - ASCIZ-имя найденного файла с расширением

После того как DTA заполнена данными, для продолжения поиска следует вызывать функцию 4Fh, пока не будет возвращена ошибка.

Функция LFN4Eh: Найти первый файл с длинным именем Вход: AX = 714Eh

CL - атрибуты, которые файл может иметь (биты 0 и 5 игнорируются) СН - атрибуты, которые файл должен иметь SI -= 0: использовать Windows-формат даты/времени SI - 1: использовать DOS-формат даты/времени DS: DX = адрес ASCIZ-строки с маской для поиска (может включать * и?. Для совместимости маска *.* ищет все файлы в директо­рии, а не только файлы, содержащие точку в имейй) ES: DI - адрес 318-байтного буфера для информации о файле Выход: CFв 0

АХ - поисковый идентификатор СХ = Unicode-флаг:

бит 0: длинное имя содержит подчеркивания вместо непреобразуемых Unicode-символов бит 1: короткое имя содержит подчеркивания вместо непреобразуемых Unicode-символов CF - 1, АХ = код ошибки, если произошла ошибка (7100h - функция не поддерживается)

Если файл, подходящий под маску и атрибуты поиска, найден, область дан­ных по адресу ES: DI заполняется следующим образом:

Функция LFN 4Fh: Найти следующий файл Вход: AX = 714Fh

ВХ = поисковый идентификатор (от функции 4Eh) SI = формат даты/времени ES: DI = адрес буфера для информации о файле Выход: CF - 0 и СХ = Unicode-флаг, если следующий файл найден

CF - 1, АХ - код ошибки, если произошла ошибка (7100h - функция не поддерживается)

Функция LFNA1h: Закончить поиск файла Вход: AX~71Alh

ВХ - поисковый идентификатор Выход: CF - 0, если операция выполнена;

CF - 1 и АХ - код ошибки, если произошла ошибка (7100h - функция не поддерживается).







Дата добавления: 2014-11-10; просмотров: 658. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

Схема рефлекторной дуги условного слюноотделительного рефлекса При неоднократном сочетании действия предупреждающего сигнала и безусловного пищевого раздражителя формируются...

Уравнение волны. Уравнение плоской гармонической волны. Волновое уравнение. Уравнение сферической волны Уравнением упругой волны называют функцию , которая определяет смещение любой частицы среды с координатами относительно своего положения равновесия в произвольный момент времени t...

Именные части речи, их общие и отличительные признаки Именные части речи в русском языке — это имя существительное, имя прилагательное, имя числительное, местоимение...

Интуитивное мышление Мышление — это пси­хический процесс, обеспечивающий познание сущности предме­тов и явлений и самого субъекта...

Объект, субъект, предмет, цели и задачи управления персоналом Социальная система организации делится на две основные подсистемы: управляющую и управляемую...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия