Восстановление данных - страница 61

Шрифт
Интервал

стр.

байт от начала атрибутного заголовка, хранит выделенный размер (allocated size of attribute), выраженный в байтах и равный реальному размеру тела атрибута, округленному до размера кластера (в большую сторону).

Два 64-разрядных поля, расположенные по смещениям >10h и >18h байт от начала атрибутного заголовка, задают первый (starting VCN) и последний (last VCN) номера виртуального кластера, принадлежащего телу нерезидентного атрибута. Виртуальные кластеры представляют собой логические номера кластеров, не зависящие от своего физического расположения на диске. В подавляющем большинстве случаев номер первого кластера тела нерезидентного атрибута равен нулю, а последний — количеству кластеров, занятых телом атрибута, уменьшенному на единицу. 16-разрядное поле, расположенное по смещению >20h от начала атрибутного заголовка, содержит указатель на массив >Data Runs, расположенный внутри этого заголовка и описывающий логический порядок размещения нерезидентного тела атрибута на диске.

Каждый атрибут имеет свой собственный идентификатор (attribute ID), уникальный для данной файловой записи и хранящийся в 16-разрядном поле, расположенном по смещению >0Eh от начала атрибутного заголовка.

Если атрибут имеет имя (attribute Name), то 16-разрядное поле, расположенное по смещению >0Ah байт от атрибутного заголовка, содержит указатель на него. Для безымянных атрибутов оно равно нулю (большинство атрибутов имен не имеют). Имя атрибута хранится в атрибутном заголовке в формате UNICODE, а его длина определяется 8-разрядным полем, расположенным по смещению >09h байт от начала атрибутного заголовка.

Если тело атрибута сжато, зашифровано или разрежено, 16-разрядное поле флагов, расположенное по смещению >0Ch байт от начала атрибутного заголовка, не равно нулю.

Основные поля резидентных и нерезидентных атрибутов кратко описаны в табл. 6.4 и 6.5. Остальные поля не играют существенной роли, и потому здесь они не рассматриваются.


Таблица 6.4. Структура резидентного атрибута

СмещениеРазмер (байт)ЗначениеОписание
>00h4Тип атрибута (например, >0x10, >0x60, >0xB0)
>04h4Длина атрибута, включая этот заголовок
>08h1>00hФлаг нерезидентности (non-resident flag)
>09h1>NДлина имени атрибута (ноль, если атрибут безымянный)
>0Ah2>18hСмещение имени (ноль, если атрибут безымянный)
>0Ch2>00hФлаги
ЗначениеОписание
>0001hСжатый атрибут (compressed)
>4000hЗашифрованный атрибут (encrypted)
>8000hРазреженный атрибут (sparse)
>0Eh2Идентификатор атрибута (attribute ID)
>10h4>LДлина тела атрибута, без заголовка
>14h2>2N+18hСмещение тела атрибута
>16h1Индексный флаг
>17h1>00hИспользуется для выравнивания
>18h2N>UNICODEИмя атрибута (если есть)
>2N+18hLТело атрибута

Таблица 6.5. Структура нерезидентного атрибута

СмещениеРазмер (байт)ЗначениеОписание
>00h4Тип атрибута (например, >0x20, >0x80)
>04h4Длина атрибута, включая этот заголовок
>08h1>01hФлаг нерезидентности (non-resident flag)
>09h1>NДлина имени атрибута (ноль, если атрибут безымянный)
>0Ah2>40hСмещение имени (ноль, если атрибут безымянный)
>0Ch2Флаги
ЗначениеОписание
>0001hСжатый атрибут (compressed)
>4000hЗашифрованный атрибут (encrypted)
>8000hРазреженный атрибут (sparse)
>0Eh2Идентификатор атрибута (attribute ID)
>10h8Начальный виртуальный кластер (starting VCN)
>18h8Конечный виртуальный кластер (last VCN)
>20h2>2N+40hСмещение списка отрезков (data runs)
>22h2Размер блока сжатия (compression unit size), округленный до 4 байт в большую сторону
>24h4>00hИспользуется для выравнивания
>28h8Выделенный размер (allocated size), округленный до размера кластера
>30h8Реальный размер (real size)
>38h8Инициализированный размер потока (initialized data size of the stream)
>40h2N>UNICODEИмя атрибута (если есть)
>2N+40hСписок отрезков (data runs)

Типы атрибутов

NTFS поддерживает большее количество предопределенных типов атрибутов, перечисленных в табл. 6.6. Тип атрибута определяет его назначение и формат представления тела. Полное описание всех атрибутов заняло бы не одну главу, а целую книгу, поэтому здесь приводятся лишь наиболее "ходовые" из них, а за информацией об остальных обращайтесь к документации Linux-NTFS Project.


Таблица 6.6. Основные типы атрибутов


стр.

Похожие книги