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

Работа с файлами в MS DOS (длинные имена)

Рассмотренные выше функции MS DOS для работы с файлами и каталогами не поддерживают длинных имен. Для этого система Windows 95/98 предоставляет приложениям MS DOS аналогичные функции, но имеющие другие номера. Впрочем, при внимательном рассмотрении большинства из этих номеров, видно, какой из старых функций они соответствуют. Новые номера состоят из четырех цифр: первые две – 071h, последние две – номер старой функции. Для некоторых функций существуют особенности в их работе.

Так, для поиска файлов по-прежнему используются две функции (по новой нумерации – 714eh и 714fh) прерывания 21h. Новые функции теперь возвращают информацию о файлах через специальную структуру WIN32_F INDDATA, адрес которой возвращается в качестве результата их работы.

При работе с функциями, поддерживающими длинные имена файлов, используются еще две структуры: byhandle_file_information и filetime. Назначение структуры by_handle_file_iinformation и работу с ней мы рассмотрим при обсуждении функции MS DOS 71a6h. Структура filetime содержит 64-разрядное значение, которое определяет число 100-наносекундных интервалов, прошедших с 12:00 утра 1 января 1901 года.

FILETIME Struc
DwLowDateTime dd?
:младшие 32 бита значения времени DwHighDateTime dd?
:старшие 32 бита значения времени FILETIME
ends

Теперь приведем перечень функций прерывания 21h, работающих с файлами, которые имеют длинные имена. Для удобства дальнейшего рассмотрения в следующей таблице приведены соответствующие функции API WIN32 и "старые" функции прерывания 21h.

Новая функция int 21h Старая функция int 21h Назначение Функция API Win32
5704h   Получить дату и время последнего доступа GetFileTime
5705h   Установить дату и время последнего доступа SetFileTime
5706h   Получить дату и время создания GetFileTime
5707h   Установить дату и время создания SetFileTime
7139h 39h Создать каталог CreateDirectory
713Ah 3ah Удалить каталог RemoveDirectory
713Bh 3bh Изменить текущий каталог SetCurrentDirectory
7141h 41h Удалить файл DeleteFile
7143h 43h Получить или установить атрибуты файла GetFileAttributes,
SetFileAttributes
7147h 47h Получить текущий каталог GetCurrentDirectory
714Eh 4Eh Найти первый файл FindFirstFile
714Fh 4Fh Найти следующий файл FindNextFile
7156h 56h Переименовать файл MoveFile
7160h   Получить полный путь GetFullPathName
7160h   Получить полный путь с краткими именами GetShortPathName
7160h   Получить полный путь с длинными именами Отсутствует
716Ch 3ch,
3dh,
5bh
Создать или открыть файл CreateFile,
OpenFile
71A0h   Получить информацию о томе GetVolumelnfonnation
71Alh   Завершить поиск FindClose
71A6h   Получить информацию о файле по описателю GetFilelnformationByHandle
71A7h   Преобразовать время файла в DOS-время FileTimeToDOSDateTime
71A7h   Преобразовать DOS-время во время файла DOSDateTimeToFileTime
71A8h   Создать псевдоним Отсутствует
71A9h   Создать или открыть файл на сервере Отсутствует
71AAh   Провести подмену Отсутствует
71AAh   Отменить подмену Отсутствует
71AAh   Получить информацию о подмене Отсутствует

Рассмотрим наиболее интересные в контексте нашего изложения функции этой таблицы. Информацию по остальным функциям можно получить, в частности, из MSDN. Порядок рассмотрения будет от простых функций к сложным, так как это было в предыдущем разделе, посвященном функциям работы с файлами ДО DOS, имеющими короткие имена.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.