Assembler - язык неограниченных возможностей
0e1cc9b4

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


Функция DOS 3Eh — Закрыть файл

Ввод: АН = 3Eh
ВХ = идентификатор
Вывод: CF = 0, если не произошла ошибка
CF = 1 и АХ = 6, если неправильный идентификатор

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

Функция DOS 41h — Удаление файла



Ввод: АН = 41h
DS:DX = адрес ASCIZ-строки с полным именем файла
Вывод: CF = 0, если файл удален
CF = 1 и АН = 02h, если файл не найден, 03h — если путь не найден, 05h — если доступ запрещен

Удалить файл можно только после того, как он будет закрыт, так как DOS будет продолжать выполнять запись в несуществующий файл, что может привести к разрушению файловой системы. Функция 41h не позволяет использовать маски (символы * и ? в имени файла) для удаления сразу нескольких файлов, хотя этого можно добиться, вызывая ее через недокументированную функцию 5D00h. Но, начиная с DOS 7.0 (Windows 95), официальная функция удаления файла может работать сразу с несколькими файлами.

Функция LFN 41h — Удаление файлов с длинным именем

Ввод: АХ = 7141h
DS:DX = адрес ASCIZ-строки с длинным именем файла
SI = 0000h: маски не разрешены и атрибуты в СХ игнорируются
SI = 0001h: маски в имени файла и атрибуты в СХ разрешены:
    CL = атрибуты, которые файлы могут иметь
    СН = атрибуты, которые файлы должны иметь
Вывод: CF = 0, если файл или файлы удалены
CF = 1 и АХ = код ошибки, если произошла ошибка. Код 7100h означает, что функция не поддерживается



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