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


Поиск файлов - часть 2


+18h: слово — дата создания файла в формате DOS:

    биты 15 – 9: год, начиная с 1980

    биты 8 – 5: месяц

    биты 4 – 0: день

+1Ah: 4 байта — размер файла

+1Eh: 13 байт — ASCIZ-имя найденного файла с расширением

После того как DTA заполнена данными, для продолжения поиска следует вызывать функцию 4Fh, пока не будет возвращена ошибка.


Функция DOS 4Fh — Найти следующий файл

Ввод: АН = 4Fh
DTA — содержит данные от предыдущего вызова функции 4Е или 4F
Вывод: CF = 0 и DTA содержит данные о следующем найденном файле, если не произошла ошибка
CF = 1 и АХ = код ошибки, если произошла ошибка


Для случая длинных имен файлов (LFN) употребляется набор из трех подфункций функции DOS 71h, которые можно использовать, только если запущен IFSmgr (всегда запускается при обычной установке Windows 95, но не запускается, например, с загрузочной дискеты MS-DOS 7.0).


Функция LFN 4Eh — Найти первый файл с длинным именем

Ввод: АХ = 714Eh
CL = атрибуты, которые файл может иметь (биты 0 и 5 игнорируются)
СН = атрибуты, которые файл должен иметь
SI = 0: использовать Windows-формат даты/времени
SI = 1: использовать DOS-формат даты/времени
DS:DX = адрес ASCIZ-строки с маской для поиска (может включать * и ?. Для совместимости маска *.* ищет все файлы в каталоге, а не только файлы, содержащие точку в имени)
ES:DI = адрес 318-байтного буфера для информации о файле
Вывод: CF = 0
АХ = поисковый идентификатор
СХ = Unicode-флаг:

    бит 0: длинное имя содержит подчеркивания вместо непреобразуемых Unicode-символов
    бит 1: короткое имя содержит подчеркивания вместо непреобразуемых Unicode-символов

CF = 1, АХ = код ошибки, если произошла ошибка (7100h — функция не поддерживается)


Если файл, подходящий под маску и атрибуты поиска, найден, область данных по адресу ES:DI заполняется следующим образом:

    +00h: 4 байта — атрибуты файла




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