MS-DOS для программиста


Открытие файла


Перед тем, как начать работу с файлом, его нужно открыть. Функции, создающие новые файлы, открывают их автоматически. Для того, чтобы открыть существующий файл, вы можете воспользоваться функцией 3Dh:

На входе: AH 3Dh
AL Требуемый режим доступа:


Бит 7: флаг наследования


0 - идентификатор файла наследуется порожденным процессом

1 - идентификатор файла не наследуется порожденным процессом


Биты 4...6: режим разделения


000 - режим совместимости

001 - запрещение всех видов доступа

010 - запрещение записи

011 - запрещение чтения

100 - разрешение всех видов доступа


Бит 3:0 - зарезервировано


Биты 0...2: вид доступа


000 - чтение

001 - запись

010 - чтение и запись

DS:DX Адрес строки, содержащей путь к файлу
На выходе: AX Код ошибки, если установлен флаг переноса CF;

Идентификатор файла, если флаг переноса CF сброшен

С помощью функции 3Dh можно открыть любой файл (но не каталог). Если требуется вид доступа "запись", открываемый файл не должен иметь атрибут "Только читаемый".

Для использования битов 4...7 (управляющих доступом к файлу другими программами в сети) должна быть запущена программа share.exe .

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

Функция 6Ch обладает расширенными возможностями по созданию и открытию файлов:

На входе: AH 6Ch
AL 00h
BX Байт флагов расширенного режима открытия файла
CX Атрибуты создаваемого файла, используется только при создании файлов
DX Выполняемая функция, если файл существует или не существует:


Биты 0-3 регистра DX задают действие, если файл существует:


0000h - если файл существует, вернуть признак ошибки;

0001h - если файл существует, открыть его;

0002h - если файл существует, заместить и открыть его.


Биты 4-7 регистра DX задают действие, если файл не существует:


0000h - если файл не существует, вернуть признак ошибки;

0001h - если файл не существует, создать и открыть его

DS:SI Адрес строки, содержащей путь к файлу
На выходе: AX Код ошибки, если флаг переноса CF установлен;

Идентификатор файла, если флаг переноса CF сброшен

CX Код выполненных действий:

0 - файл был открыт;

1 - файл был создан и открыт;

2 - файл был замещен и открыт

<


Начало  Назад  Вперед



Книжный магазин