Начиная с MS-DOS 2.0, файловая система организована в виде каталогов, которые могут содержать файлы и другие каталоги. Функции поиска файлов действуют только в пределах текущего каталога, а функции создания и удаления файлов не действуют на каталоги, несмотря на то, что на самом низком уровне каталог — тот же файл, в атрибуте которого бит 4 установлен в 1 и который содержит список имен вложенных файлов, их атрибутов и физических адресов на диске.
Функция DOS 39h — Создать каталог
Ввод: | АН = 39h DS:DX = адрес ASCIZ-строки с путем, в котором все каталоги, кроме последнего, существуют. Для версии DOS 3.3 и более ранних длина всей строки не должна превышать 64 байта |
Вывод: | CF = 0, если каталог создан CF = 1 и АХ = 3, если путь не найден, 5 — если доступ запрещен |
Функция LFN 39h — Создать каталог с длинным именем
Ввод: | АХ = 7139h DS:DX = адрес ASCIZ-строки с путем |
Вывод: | CF = 0, если каталог создан CF = 1 и АХ = код ошибки (7100h, если функция не поддерживается) |
Функция DOS 3Ah — Удалить каталог
Ввод: | АН = 3Ah DS:DX = адрес ASCIZ-строки с путем, последний каталог в котором будет удален (только если он пустой, не является текущим, не занят командой SUBST) |
Вывод: | CF = 0, если каталог удален CF = 1 и АХ = 3, если путь не найден, 5 — если доступ запрещен, 10h — если удаляемый каталог — текущий |
Функция LFN 3Ah — Удалить каталог с длинным именем
Ввод: | АХ = 713Ah DS:DX = адрес строки с путем |
Вывод: | CF = 0, если каталог удален, иначе CF = 1 и АХ = код ошибки |
Функция DOS 47h — Определить текущий каталог
Ввод: | АН = 47h DL = номер диска (00h — текущий, 01h — А: и т.д.) DS:SI = 64-байтный буфер для текущего пути (ASCIZ-строка без имени диска, первого и последнего символа «\») |
Вывод: | CF = 0 и АХ = 0100h, если операция выполнена CF = 1 и АХ = 0Fh, если указан несуществующий диск |
Ввод: | АХ = 7147h DL = номер диска DS:SI = буфер для пути (ASCIZ- строка без имени диска, первого и последнего символа «\». Необязательно содержит только длинные имена — возвращается тот путь, который использовался при последней смене текущего каталога) |
Вывод: | CF = 0, если операция выполнена, иначе CF = 1 и АХ = код ошибки |
Ввод: | АН = 3Bh DS:DX = адрес 64-байтного ASCIZ-буфера с путем, который станет текущим каталогом |
Вывод: | CF = 0, если произошла смена каталога, иначе CF = 1 и АХ = 3 (путь не найден) |
Ввод: | АХ = 713ВН DS:DX = адрес ASCIZ-буфера с путем |
Вывод: | CF = 0, если произошла смена каталога, иначе CF = 1 и АХ = код ошибки |
Ввод: | АХ = 71A0Н DS:DX = адрес ASCIZ-строки с именем раздела (например: db "С:\",0) ES:DI = адрес буфера для имени файловой системы (FAT, NTFS, CDFS) СХ = размер буфера в ES:DI (обычно достаточно 32 байта) |
Вывод: | СХ = 0, АХ = 0000h или 0200h ВХ = флаги файловой системы: бит 0: функции поиска учитывают регистр символов бит 1: регистр символов сохраняется для имен каталогов бит 2: используются символы Unicode бит 14: поддерживаются функции LFN бит 15: включено сжатие раздела (DoubleSpace) СХ = максимальная длина имени файла (обычно 255) DX = максимальная длина пути (обычно 260) в Windows 95 SP1 возвращает 0000h для CD-ROM CF = 1 и АХ = код ошибки, если произошла ошибка (7100h, если функция не поддерживается) |