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


Управление файловой системой - часть 2


/p>


Функция LFN 47h — Определить текущий каталог с длинным именем

Ввод: АХ = 7147h
DL = номер диска
DS:SI = буфер для пути (ASCIZ-строка без имени диска, первого и последнего символа «\». Необязательно содержит только длинные имена — возвращается тот путь, который использовался при последней смене текущего каталога)
Вывод: CF = 0, если операция выполнена, иначе CF = 1 и АХ = код ошибки


Функция DOS 3Bh — Сменить каталог

Ввод: АН = 3Bh
DS:DX = адрес 64-байтного ASCIZ-буфера с путем, который станет текущим каталогом
Вывод: CF = 0, если произошла смена каталога, иначе CF = 1 и АХ = 3 (путь не найден)


Функция LFN 3Вh — Сменить каталог с длинным именем

Ввод: АХ = 713ВН
DS:DX = адрес ASCIZ-буфера с путем
Вывод: CF = 0, если произошла смена каталога, иначе CF = 1 и АХ = код ошибки


Перед работой с любыми функциями LFN следует один раз вызвать подфункцию A0h, чтобы определить размеры буферов для имен файлов и путей.


Функция LFN A0h — Получить информацию о разделе файловой системы VFAT

Ввод: АХ = 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, если функция не поддерживается)


Кроме того, при вызове любой функции LFN следует устанавливать CF в 1 для совместимости с ранними версиями DOS. Старые версии DOS не изменяли CF, так что в результате, если функция не поддерживается, CF останется равным 1.





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