Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы СПО / Мет6.doc
Скачиваний:
28
Добавлен:
12.04.2015
Размер:
406.02 Кб
Скачать

4.2. Поиск файлов в dos

Функции поиска возвращают информацию о найденных файлах в области памяти DTA (Data Transfer Area). По умолчанию DTA располагается в PSP со смещения 0080h и имеет размер 128 байт.

Адрес начала DTA можно изменить функцией 1Ah прерывания INT 21h.

Вход: AH = 1Ah

DS:DX = адрес начала DTA (для поиска файлов в DOS достаточно DTA размером 43 байта)

Для поиска файлов в DOS используется две функции. Функция 4Eh (найти первый файл) вызывается один раз в начале поиска. Для последующего поиска используется функция 4Fh (найти следующий файл). Обе функции устанавливают CF=0, если файл найден, и CF=1 в противном случае.

Информация о найденных файлах размещается в области DTA в формате, приведенном в таблице 3.

Найти первый файл

Вход: AH = 4Eh

DS:DX = адрес ASCIIZ строки с масками для поиска.

Может включать путь и символы «*» и «?». Если путь не указан, поиск ведется в текущем каталоге.

CX = атрибуты (см. табл.1). Если бит 3 (метка тома)

установлен, все остальные биты игнорируются.

Независимо от значения битов 0 и 5 файлы с атрибутами архивный и только для чтения находятся при всех вариантах поиска. Файлы с атрибутами скрытый и системный ищутся, только если установлены соответствующие биты.

Выход: CF=0, если файл найден, и область DTA заполняется

данными;

CF=1, если ошибка, в AX код ошибки

(02h = файл не найден, 03h = путь не найден,

0Ch = неверный режим доступа,

12h = больше нет файлов).

Найти следующий файл

Вход: AH = 4Fh

Выход: CF=0, если файл найден, и область DTA заполняется

данными;

CF=1, если ошибка, в AX код (см. функцию 4Eh).

Таблица 3

Смеще-ние

Размер, байт

Описание

00h

1

Идентификатор диска (A:\ =1, C:\=3 и т.д.; бит 7 – диск сетевой)

Используется функцией 4Fh при следующем поиске

01h

11

Маска поиска (без пути)

0Ch

1

Атрибуты поиска

0Dh

2

Порядковый номер файла в каталоге

0Fh

2

Номер начального кластера каталога, в котором ведется поиск

11h

4

Зарезервировано

15h

1

Атрибут найденного файла

16h

2

Время модификации файла в формате DOS (табл.1)

18h

2

Дата модификации файла в формате DOS (табл. 1)

1Ah

4

Размер файла в байтах

1Eh

13

Имя с расширением найденного файла в формате ASCIIZ. Для файлов с длинными именами здесь возвращается алиас.

4.3. Поиск файлов в Windows

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

AX = 714Eh – найти первый файл;

AX = 714Fh – найти следующий файл;

AX = 71A1h – закончить поиск.

Эти функции поддерживаются, только если при загрузке Windows 95 запущен IFSmgr. Он всегда запускается при обычной установке, но отсутствует при загрузке с дискеты MS-DOS 7.0. Если функции поиска файлов не поддерживаются, то после их вызова CF=1 и AX=7100h.

Информация о файле помещается в 318-байтовый буфер, адрес которого передается функциям в ES:DI.

Функции определяют файлы как с длинными, так и с короткими именами, созданными в DOS. В последнем случае поле «короткое имя» в 318-байтовом буфере остается не заполненным.

Информация о найденных файлах помещается в буфер в формате, описанном в таблице 4.

Найти первый файл с длинным именем

Вход: AX = 714Eh

DS:DX = адрес ASCIIZ строки с масками для поиска

ES:DI = адрес 318-байтного буфера

SI = формат даты/времени (=0 – Windows, =1 – DOS)

CL = атрибуты, которые файл может иметь (см. функ. 4Eh)

CH = атрибуты, которые файл должен иметь

Выход: CF = 0 – файл найден:

AX= поисковый идентификатор (используется в функциях

714Fh и 71A1h),

CX = Unicode-флаг: бит 0 установлен – длинное имя

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

CF = 1 – ошибка, в АХ код ошибки (см. функцию 4Eh).

Найти следующий файл с длинным именем

Вход: AX = 714Fh

BX = поисковый идентификатор

ES:DI = адрес 318-байтного буфера

SI = формат даты/времени (=0 – Windows, =1 – DOS)

Выход: CF = 0 – файл найден:

CX = Unicode-флаг (см. функцию 714Eh).

CF=1 – ошибка, в АХ код ошибки (см. функцию 4Eh).

Закончить поиск файла с длинным именем

Вход: AX = 71A1h

BX = поисковый идентификатор

Выход: CF = 0 – если операция выполнена

CF = 1, если произошла ошибка (в AX код ошибки).

Функцию «Закончить поиск файла» не следует вызывать, если первый поиск оказался неудачным.

Таблица 4

Смеще-ние

Размер, байт

Описание

00h

4

Атрибуты файла: биты 0–6 соответствуют атрибутам файла DOS, бит 8 – временный файл

04h

8

Дата/время создания файла*

0Ch

8

Дата/время последнего доступа к файлу*

14h

8

Дата/время последней модификации файла*

1Ch

4

Старшее двойное слово длины файла

20h

4

Младшее двойное слово длины файла

24h

8

Зарезервировано

2Ch

260

Имя файла длинное в формате ASCIIZ

130

14

Имя файла короткое (алиас) в формате ASCIIZ

Соседние файлы в папке Лабы СПО