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

Создание файлов


Для создания файла предназначена функция 3Ch прерывания INT 21h. С помощью этой функции может быть создан файл как в текущем, так и в любом другом каталоге. Если файл с указанным именем уже существует, он обрезается до нулевой длины. Будьте осторожны при использовании этой функции - она может уничтожить файл.

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

Приведем параметры вызова функции создания файла:

На входе: AH 3Ch
CX Атрибуты создаваемого файла:



00h - обычный файл;

01h - только читаемый файл;

02h - скрытый файл;

04h - системный файл

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

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

При выполнении этой функции возможно возникновение следующих ошибок:

  • отсутствует какой-либо элемент в пути для создаваемого файла, например, диск или каталог;

  • была сделана попытка создать файл в корневом каталоге, но корневой каталог переполнен;
  • в указанном каталоге уже есть файл с таким именем, и этот файл имеет атрибут "Только читаемый";
  • пользователь, который работает в сети, не имеет прав доступа для выполнения указанной операции.
  • Операционная система игнорирует попытки создания с помощью этой функции каталога или метки диска.

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

    На входе: AH 5Bh
    CX Атрибуты создаваемого файла:

    00h - обычный файл;

    01h - только читаемый файл;

    02h - скрытый файл;

    04h - системный файл

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

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

    <
    Если вам требуется временный файл, вы можете создать его с помощью функции 5Ah:

    На входе: AH 5Ah
    CX Атрибуты создаваемого файла:

    00h - обычный файл;

    01h - только читаемый файл;

    02h - скрытый файл;

    04h - системный файл
    DS:DX Адрес блока памяти, в который функция запишет путь созданного временного файла. Размер этого блока памяти должен быть по крайней мере 13 байт
    На выходе: AX Код ошибки, если был установлен флаг переноса CF;

    Идентификатор файла, если флаг переноса CF сброшен
    Операционная система не будет автоматически удалять созданный временный файл после завершения работы программы или перезагрузки. Программа должна сама удалить этот файл.


    Содержание раздела