Иллюстрированный самоучитель по задачам и примерам Assembler

Работа с дисками, каталогами и организация поиска файлов

Получить полный путь с длинными именами

Вход: АН = 7160h; CL = 2;

СН – содержимое результата (СН = 80 – получить имя диска; СН = 0 – получить полный путь);

DS:SI – адрес ASCIIZ-строки с именем файла или каталога, для которых необходимо получить путь в длинной форме. Допускаются оба типа имен – длинные и короткие;

ES:DI – адрес строки, в которую необходимо записать полный путь. Размер буфера должен быть достаточным для размещения пути максимальной длины (функция 71a0h).

Выход: CF = 0 – успешное выполнение функции, в результате чего полный путь от корневого каталога в виде ASCIZ-строки записывается в буфер, адрес которого указан в ES:DI;

CF = 1 – АХ = код ошибки.

Получить информацию о файле по описателю

Вход: АН = 71A6h; флаг cf = 1; ВХ = дескриптор файла; DS:DX – адрес структуры BYHANDLEFILEINFORMATION.

Выход: CF = 0 – успешное выполнение функции;

CF = 1 – АХ = код ошибки.

Формат структуры BYHANDLEFILEINFORMATION приведен ниже.

Y_HANDLE_FILE_INFORMATION StuiC
"DwFiieAttributes dd?
FtCreationTimedd 2 dup(?)
FtLastAccessTime dd 2 dup(?)
FtLastWriteTime dd 2 dup(?)
DwVolumeSeria 1 Number dd?
NFileSizeHigh dd?
NfileSizeLow dd?
NnunberOfLinksdd?
NFilelndexHighdd?
NFilelndexLow dd?
BY_HANDLE_FILE_INFORMATION ends

Поля этой структуры описаны в следующей таблице.

Поле Описание
dwFileAttributes Атрибуты файла.
Этот элемент может быть комбинацией следующих значений:
FI LE_ATTR IBUTENORMAL (00000000H) – файл доступен по чтению и записи; этот атрибут нельзя комбинировать с другими;
FILE_ATTRIBUTE_READONLY (00000001Н) – файл только для чтения;
FILE_ATTRIBUTE_HIDDEN (00000002H) – скрытый файл;
FILE_ATTRIBUTE_SYSTEM (00000004H) – системный файл;
FILE_ATTR IBUTEDI RECTORY (00000010H) – каталог;
FILE ATTRIBUTE ARCHIVE (00000020H) – архивный файл
CreationTime Время создания файла в 64-разрядном формате
ftLastAccessTime Время последнего доступа к файлу в 64-разрядном формате
ftLastWriteTime Время последней записи в файл в 64-разрядном формате
dwVolumeSerialNumber Серийный помер тома, на котором находится файл
NFileSizeHigh Старшее слово значения, определяющего размер файла
NFiieSizeLow Младшее слово значения, определяющего размер файла
NNumberOfLinks Число связей с данным файлом. В файловых системах FAT и HPFS этот элемент всегда равен 1. В файловой системе NTFS число связей может превышать 1
NFilelndexHigh Старшее слово уникального дескриптора, связанного с файлом
NFilelndexLow Младшее слово уникального дескриптора, связанного с файлом. Файл однозначно определяется дескриптором и серийным номером тома
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.