Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
120
Добавлен:
02.06.2015
Размер:
1.57 Mб
Скачать

10. Хранение длинных имен.

Требование совместимости, которым должна удовлетворять система Windowsозначает что невозможно просто изменить существующий формат хранения данных на диске, который применяется вFAT.VFATподдерживает как длинные так и короткие имена. 32х битный элемент каталога идентичен тому формату, который поддерживают предыдущие версии ОС. Метод работы с длинными именами файлов строится на использовании байта атрибута элемента каталога для коротких имен файлов. Установка младших 4х битов этого байта задает элементу каталога атрибуты: только чтение, скрытый, системный, метка тома. Добавление метки тома дает не имеющее смысла сочетание и защищает элемент каталога от изменения.Windowsиспользует для формирования длинного имени несколько последовательных коротких имен элементов каталога, защищая каждое при помощи байта атрибута 0Fh.

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

Сегмент длинного имени располагается так:

Каждый 32х байтный элемент описывающий длинное имя содержит порядковый номер, защитный байт атрибута, и контрольную сумму. Порядковый номер позволяет виндовозу узнать о непоследовательном или некорректном изменении структуры каталога. Контрольная сумма вычисляется по связанному с данным файлом короткому имени, и если короткое имя изменится вне структуры винды то ОС поймет что элементы длинного имени больше не имеют смысла. Система хранит длинные имена файлов в виде символов таблиц юникод (2байта на символ). Поле тип нигде не используется.

Контрольная сумма вычисляется по связанному с длинным файлом короткому имени. Если короткое имя изменится вне среды Windows, то элементы длинного имени больше не будут иметь смысл.

Основная проблема при формировании короткого имени, связанного с длинным, заключается в создании уникального короткого имени, которое не совпадет с уже каким-нибудь существующим коротким именем.

При формировании коротких имен учитываются следующие правила:

- если длинное имя может быть принято как короткое, оно должно быть уникальным

- если из длинного имени не получается короткое, ОС выполняет ряд операций усечения и преобразования, чтобы получить допустимое короткое имя. Longna~1.doc

Для работы с короткими именами используют функции 56hи 7156h.

!!! Дальше идет инфа, которую нам не давала Караваева.

Для того, чтобы распространить использование длинных имен файлов на все типы приложений, Microsoftрасширила набор функций прерыванияMSDOSInt21hдля работы с длинными именами файлов, блокировки устройств с заменяемыми носителями и блокировки дисков. Расширение состояло в добавлении новых функций, которые полностью эквивалентны функциямWin32API, и в совершенствовании существующих функцийMSDOS, которые работают с именами. Обращения к новым и к модифицированным функциямInt21hпродолжают использовать стандартные дляMS-DOSсоглашения о передаче и возвращении параметров через регистры. Эти функции по-прежнему реализованы в виде 16-разрядного кода.

Прежде, чем использовать функции поддержки длинных имен файлов, программа должна выполнить несколько проверок. Во-первых, необходимо проверить версию MS-DOS. Если значение, возвращаемое функцией 30hпрерыванияInt21hменьше 7, то функции использовать нельзя. Затем нужно проверить, работает ли программа под управлениемWindows- в режимеDOS-приложений эти функции также использовать нельзя. Далее следует проверить, поддерживаются ли длинные имена файлов для данного устройства. Новая функция 71A0hпрерыванияInt21hпозволяет получить информацию об устройстве. В регистре ВХ возвращаются флаги, описывающие данное устройство.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]