1 / 7

ЛЕКЦИЯ № 10 РАБОТА С ФАЙЛАМИ В MS DOS (длинные имена)

ЛЕКЦИЯ № 10 РАБОТА С ФАЙЛАМИ В MS DOS (длинные имена)

cala
Download Presentation

ЛЕКЦИЯ № 10 РАБОТА С ФАЙЛАМИ В MS DOS (длинные имена)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ЛЕКЦИЯ № 10 РАБОТА С ФАЙЛАМИ В MS DOS (длинные имена) Рассмотрим отдельно средства среды MS DOS, предназначенные для работы с файловой системой, использующейся в операционной системе Windows. Установить тот факт, что система поддерживает длинные имена файлов, можно вызовом функции 71а0h прерывания 21h. Получить информацию о томе ВХОД: АХ=71а0h; DS:SI – ASCIZ – имя корневого каталога тома, о котором необходимо получить информацию (например, “C:\”); ES:DI – буфер для имени файловой системы; СХ= размер буфера, адрес которого задан в ES:DI (32 байта). ВЫХОД: CF=0 в случае успеха, следующие регистры установлены: ИХ= флаги файловой системы: 0 – при поиске учитывать регистр букв в именах файлов; 1 – сохранять регистр букв в элементах каталога; 2 – использование символов Unicode в именах файлови каталогов;

  2. 3 = 13 – резерв (0); 14 – поддержка DOS –функций для длинных имен файлов; 15 – сжатый том; СХ = максимальная длина файловых имен (обычно 255); DX= максимальная длина пути (обычно 260); ES:DI – в буфере по этому адресу ASCIZ – имя файловой системы. CF=1 в случае неудачи, при этом АХ= код ошибки или АХ=7100h если функция не поддерживается. Для работы с длинными именами файлов Windows предоставляет аналогичные традиционным функции, но имеющие другие номера. Новые номера состоят из четырех цифр: первые две 071h, последние – номер старой функции. Для некоторых функций существуют особенности в их работе. Так, функции поиска файлов – 714eh, 714fh прерывания 21h возвращают информацию о файлах через специальную структуру WIN32_FIND_DATA, адрес которой возвращается в качестве результата их работы. При работе с функциями, поддерживающими длинные имена файлов, используются еще две структуры: by_handle_file_information и filetime. Последняя структура содержит 64 – разрядное значение, которое определяет число 100 – наносекундных интервалов, прошедших с 12:00 утра 1 января 1901 года.

  3. FILETIME struc DwLowDateTime dd ? ;младшме 32 бита значения времени DwHighDateTime dd ? ;старшие 32 бита значения времени Сравнительный перечень функций MS DOS (короткие и длинные имена) и аналогичных функций API WIN32

  4. Создание или открытие файла ВХОД: АХ=716Сh; ВХ= режимы доступа и флаги: режимы доступа: 0000h – файл только для чтения; 0001h – файл только для записи; 0002h – файл для чтения и записи; 0003h – резерв;0004h – открыть файл для чтения без изменения даты последнего доступа; режимы разделения: 0000h – режим эмуляции – файл можно открывать любой программе любое число раз; 0010h – файл открыт в монопольном режиме доступа ; 0020h – файл открыт в монопольном режиме доступа по записи; 0030h – файл открыт в монопольном режиме доступа по чтению; 0040h –открыть файл, разрешая другим процессам доступ по чтению – записи, но с запретом режима эмуляции;

  5. флаги: 0080h – дочерний процесс не наследует дескриптор файла, его при необходимости следует передавать явно; 0100h – не использовать буферизацию или кэширование средствами ОС, операции чтения-записи выполняются напрямую с диском в соответствии с текущим положением файлового указателя; 0200h – файл нельзя сжимать; 0400h – содержимое регистра DI следует использовать как порядковый номер в псевдониме файла; 2000h – не вызывать обработчик критической ошибки (int 24h), MS DOS вернет программе код ошибки; 4000h – после каждой операции записи MS DOS будет отправлять данные на диск без их кэширования; СХ= атрибуты создаваемого (и только) файла: 0000h – чтение – запись; 0001h – только чтение; 0002h – скрытый файл; 0004h – системный файл; 0008h – метка тома; 0020h – архивный файл; DX= действия, если файл существует или не существует, значения битов: 0010h – вернуть ошибку, если файл существует, иначе создать файл; 0001h – открыть файл, если он существует, иначе вернуть ошибку; 0002h – открыть файл без сохранения существующего, иначе вернуть ошибук (если файл не существует); DS:SI – ASCIZ – имя файла;

  6. DI – порядковый номер, который добавляется к концу имени в псевдониме файла (для этого должен быть задан флаг 0400h в регистре ВХ). ВЫХОД: CF=0 успешное завершение: АХ= дескриптор файла, СХ= состояние: 1-файл открыт; 2- файл открыт без сохранения содержимого; CF=1: АХ= код ошибки. После того, как файл открыт или создан функцией 716сh , с ним можно работать, используя старые функции чтения-записи и позиционирования.

More Related