Длиннее Имя Архива (LFN)
По мере того как мы уже обсуждали более в самом начале обсуждение директории корня, ранее директория корня использовала быть зафиксированным в размере и расположенным на фикчированном положении на диске но теперь она свободно вырасти по необходимости по мере того как она теперь обработано как архив.
Это очень важно к длинним filenames потому что каждый длинний filename использует множественные входы директории. Добавлять длиннюю поддержку filename к оперативной системе использует 8.3 filenames не как просто как расширяя входы директории держать больше чем 11 характер.
Если эта новая оперативная система возвращает filenames 255-character, то много более старых применений, которые рассчитывают получить no more чем 11 характер, разбили бы потому что программа должна set aside память для того чтобы хранить filenames, котор она читает, и если она устанавливает в сторону 16 байт для filename и экземпляров оперативной системы (мнения) 32 характера в тот космос, то, тогда другие данные получают overwritten. Верныйа способ сломать применение должен скопировать случайно данные в свой космос данных.
Отжало эту проблему, ухищренное разрешение были найдены, что в Шиндошсе 9щ, к проблеме поддерживать длинние filenames пока сохраняющ совместимость с ранее вариантами применений dos и Windows.
Когда большинств применения (за исключением низкоуровневых программ обслуживания дисков such as доктор диска Norton) запрашивают систему для имен архива и subdirectory, они делают так не путем читать входы директории сразу с диска, но путем использование функций обозначения построенных в оперативную систему.
По мере того как мы знаем что вход директории маркирован при спрятанная комбинация только для чтения, система, и пометка на томе приписывают биты. Вероятн, если байт атрибута входа директории держат значение 0FH, то функции обозначения построенные в все existing варианты dos и все Пре-Windows 95 вариантов Windows прыгнут над тем входом директории если оно не было там.
После этого, разрешение должно было хранить 2 имени для каждых архива и subdirectory, скоро имени которое видимо к всем применениям и длиннему имени которое видимо только к применениям Шиндошса 9щ (и более поздно) и к применениям которые были перезаписаны для того чтобы добавить поддержку для длинних filenames. Скоро filenames хранятся в 8.3 формах в обычных входах директории 32-byte.
Мы уже обсуждали что Windows создает скоро filename от длиннее одного путем усекать его до 6 upper case характеров и добавлять "~1" к концу низкопробного filename.
Если будет уже другой filename с такими же первыми 6 характерами, то номер инкрементирован. Выдвижение сдержано этим же, и любой характер который был противозакон в более предыдущих вариантах Windows и dos заменен с underscore.
Длинние filenames хранятся в специально форматных длинних входах директории имени архива 32-Byte (LFN) маркированных при байты атрибута установленные к 0FH. Для, котор дали архива или subdirectory, группа в составе one or more длинние входы директории имени архива немедленно предшествует одиночный вход директории 8.3 на диск.
Каждый длинний вход директории имени архива содержит up to 13 характера длиннего filename, и оперативная система шнурует совместно так много по мере того как необходимо для того чтобы состоять из всего длиннего filename.
Для длиннего входа директории имени архива, filenames хранятся в форме Unicode, которая требует 2 байт в характер в отличие от 1 байта ascii. Характеры filename распространены среди 3 отдельно полей:
- Первые 10 байт (5 характеров) в длине,
- Вторые 12 байта (6 характеров),
- Третьи 4 байта (2 характера).
Самые низкие 5 битов первого байта владения входа директории номер последовательности, котор определяет положение входа директории по отношению к другим длинним входам директории имени архива связал с таким же архивом.
Если длинний filename требует 3 входов директории LFN, то номер последовательности первого будет 1, которое из секунды будет 2, и номер последовательности трети будет 3 и сдержанные 6 из первого байта третьего входа установлены до 1 для того чтобы показать что будет последним входом в последовательность.
Поле атрибута появляется на такое же расположение в входах директории LFN как в 8.3 входы директории потому что система файлов не знает которым типом входа директории она не общаться с до тех пор пока после того как она расмотрит байт атрибута. Начиная поле номера группы также появляется на такое же положение, но в входах директории LFN свое значение всегда 0. Поле индикатора типа также держит 0 в каждом длиннем filename.
Одна из проблем с длинними filenames что они уничтожают больше космоса диска чем скоро одни. То не будет крупнаяа сделка когда длинние имена хранятся в subdirectories, потому что как длиной по мере того как космос диска имеющийся, subdirectories могут grow to приспосабливают добавили входы директории но максимальным числом входов директории имеющихся в директории корня будет космос фикчированных, и длинних filenames неныжный в директории корня которая ограничена в размере.
Теперь например, если директория корня трудные диски содержит на большой части 512 входа директории, потому что имя 128-character требует 11 входа, 10 для длиннего имени и 1 для скоро имени, то вы смогли создать только 46 архивы и subdirectories в директории корня если каждому дало имя 128-character.
Проблема идет прочь для FAT32 также потому что директория корня под FAT32 может вырасти также потому что в системе FAT32 обработана директория корня по мере того как архив может вырасти в размере.
|