
- •Робота з файлами
- •Теоретичні відомості
- •Работа с файлами с длинными именами в ms-dos
- •Описание функций для работы с файлами с длинными именами:
- •716Сh - открыть или создать файл
- •7141H – удаление файла с длинным именем.
- •714Eh - поиск первого соответствующего файла с длинным именем
- •714Fh – найти следующий файл
- •5706H – получить дату и время создания файла
- •5707H – установить дату и время создания или последней модификации файла
- •7143H – получить или установить атрибуты файла
- •7156H – переименовать файл
- •7160H – Получить полный путь файла
- •Вспомогательные функции при работе с файлами:
- •67H – изменить максимальное число идентификаторов файлов, доступных для одновременной работе в системе:
- •71A7h – Преобразование времени из Windows-формата в dos-формат и наоборот
- •Рекомендации по построению программы, использующей функции работы с файлами
- •1) Обработка ошибок – вывод сообщения о конкретной ошибке
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •2) Вывод информации о файле
- •3) Поиск файла с длинным именем
- •Int 21h
- •Додаток 0
- •Приложение 2 Примеры и алгоритмы программ, использующих функции работы с файлами
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Xor ah,ah
- •Int 21h
- •Int 21h
Описание функций для работы с файлами с длинными именами:
716Сh - открыть или создать файл
Вход | |
AX |
716ch |
BX |
Режимы доступа и флаги (см. таблицу 3) |
CX |
Атрибуты файла (см. таблицу 2) |
DX |
Управление действиями при существовании/отсутствии файлов: - бит 0 - Открыть файл (вернуть ошибку, если файл не существует) - бит 1 - Заменить файл (вернуть ошибку, если файл не существует) - бит 4 - Создать файл (вернуть ошибку, если файл существует) |
DS:SI |
Указывают на строку в формате ASCIZ, обозначающую имя файла |
DI |
Порядковый номер, который добавляется в конце короткого имени (для этого должен быть задан флаг 0400hв регистреBX) |
Выход | |
CF |
0 – успешное выполнение операции, 1 – при выполнении произошла ошибка |
AX |
Дескриптор файла, если операция завершена успешно, Код ошибки в случае ошибки (см. табл. 6) |
CX |
Состояние выполнения операции: 1 - файл открыт 2 - файл создан и открыт 3 – файл перезаписан (заменён) |
7141H – удаление файла с длинным именем.
Вход | |
AX |
714Eh |
DS:DX |
адрес строки ASCIZс длинным именем файла |
SI |
0000h– использование маски запрещено и атрибуты в СХ игнорируются 0001h– маски в имени файла разрешены и атрибуты в СХ используются |
CL |
Атрибуты, которые файлы могут иметь (см. табл. 2) |
CH |
Атрибуты, которые файлы должны иметь (см. табл. 2) |
Выход | |
CF |
0 – файл или файлы найдены или удалены 1 – произошла ошибка |
АХ |
Код ошибки, если произошла ошибка (см. табл. 6) |
714Eh - поиск первого соответствующего файла с длинным именем
Функцию можно применять, только если запущен IFSmgr, который всегда запускается при обычной установкеWindows, но не запускается, например, с загрузочной дискетыMS-DOS7.0
Вход | |
АХ |
714Еh |
CL |
Атрибуты, которые файл может иметь (биты 0 и 5 игнорируются) (см. табл. 2) |
CH |
Атрибуты, которые файл должен иметь (см. табл. 2) |
SI |
0000h- использоватьWindows-формат даты и времени 0001h- использоватьDOS-формат даты и времени (см. табл. 4) |
DS:DX |
адрес ASCIZ-строки с маской для поиска (Может включать * и ?. Для совместимости, маска *.* ищет все файлы, а не только файлы, содержащие точку в имени) |
ES:DI |
адрес 318-байтного буфера для информации о файле (см. табл. 5) |
Выход | |
CF |
0 – найден соответствующий файл 1 – произошла ошибка |
АХ |
- поисковый идентификатор, если не было ошибки - код ошибки, если произошла ошибка (см. табл. 6) |
СХ |
Unicode-флаг: бит 0 - длинное имя содержит подчёркивания вместо непреобразуемых Unicode-символов бит 1 - короткое имя содержит подчёркивания вместо непреобразуемых Unicode-символов |
Для поиска всех возможных файлов рекомендуется в CXзаносить 00FFh
714Fh – найти следующий файл
Вход | |
AX |
714Eh |
BX |
Поисковый идентификатор (от функции 4Eh) |
SI |
Формат даты времени (см. функцию 714Eh) |
ES:DI |
Адрес буфера для информации о файле |
Выход | |
CF |
0, если найден следующий файл 1, если ошибка |
СХ |
Unicode-флаг, если следующий файл найден |
AX |
Код ошибки при ошибке. (см. табл. 6) |
71А1h – закончить поиск файла
Вход | |
АХ |
71А1h |
ВХ |
поисковый идентификатор |
Выход | |
CF |
0 – если следующий файл найден 1 – если произошла ошибка |
АХ |
Код ошибки, если произошла ошибка (см. табл. 6) |
7139h – создание директории с длинным именем
Вход: | |
АХ |
7139h |
DS:DX |
адрес ASCIZ-сроки с путём |
Выход: | |
CF |
0 – операция выполнена успешно 1 – произошла ошибка |
AX |
Код ошибки, если произошла ошибка (см. табл. 6) |
713Аh – удаление директории с длинным именем
Вход: | |
АХ |
713Аh |
DS:DX |
Адрес ASCIZ-сроки с путём |
Выход: | |
CF |
0 – операция выполнена успешно 1 – произошла ошибка |
AX |
Код ошибки, если произошла ошибка (см. табл. 6) |
7147h - определить текущую директорию с длинным именем
Вход: | |
АХ |
7147h |
DL |
Номер диска |
DS:SI |
64-байтный буфер для текущего пути (ASCIZ-строка без имени диска, первого и последнего символов \) |
Выход: | |
CF |
0 – операция выполнена успешно 1 – произошла ошибка |
AX |
Код ошибки, если произошла ошибка (см. табл. 6) |
713Bh – сменить директорию с длинным именем
Вход: | |
АХ |
713Bh |
DS:DX |
Адрес ASCIZ-сроки с путём |
Выход: | |
CF |
0 – операция выполнена успешно 1 – произошла ошибка |
AX |
Код ошибки, если произошла ошибка (см. табл. 6) |
71A0h – получить информацию о разделе файловой системы VFAT
Вход: | |
AX |
|
DS:DX |
ASCIZ (db “C:\”,0) |
ES:DI |
(FAT, NTFS, CDFS) |
CX |
(ES:DI) |
Выход: | |
CF |
0 – операция выполнена успешно 1 – произошла ошибка |
AX |
0000hили 0200h, если операция завершена успешно Код ошибки при CF=1 (см. табл. 6) |
BX |
Флаги файловой системы: бит 0 – функции поиска учитывают регистр символов бит 1 – регистр символов сохраняется для имён директорий бит 2 – используются символы Unicode бит 14 – поддерживаются функции работы с файлами с длиннымит именами бит 15 – включено сжатие раздела (Doublespace) |
CX |
Максимальная длина имени файла (обычно 255) |
DX |
Максимальная длина пути (обычно 260) (в Windows95SP1 возвращается 0000hдляCD-ROM) |