Длина тела резидентных атрибутов, выраженная в байтах, хранится в 32- разрядном поле, расположенном по смещению 10h байт от начала атрибутного заголовка. 16-разрядное поле, следующее за его концом, хранит смещение резидентного тела, отсчитываемое от начала атрибутного заголовка. С нерезидентными атрибутами в этом плане все намного сложнее, и для хранения длины их тела используется множество полей. 28h
байт от начала атрибутного заголовка, хранит
Два 64-разрядных поля, расположенные по смещениям 10h
и 18h
байт от начала атрибутного заголовка, задают первый (starting VCN) и последний (last VCN) номера виртуального кластера, принадлежащего телу нерезидентного атрибута. Виртуальные кластеры представляют собой логические номера кластеров, не зависящие от своего физического расположения на диске. В подавляющем большинстве случаев номер первого кластера тела нерезидентного атрибута равен нулю, а последний — количеству кластеров, занятых телом атрибута, уменьшенному на единицу. 16-разрядное поле, расположенное по смещению 20h
от начала атрибутного заголовка, содержит указатель на массив Data Runs
, расположенный внутри этого заголовка и описывающий логический порядок размещения нерезидентного тела атрибута на диске.
Каждый атрибут имеет свой собственный 0Eh
от начала атрибутного заголовка.
Если атрибут имеет 0Ah
байт от атрибутного заголовка, содержит указатель на него. Для безымянных атрибутов оно равно нулю (большинство атрибутов имен не имеют). Имя атрибута хранится в атрибутном заголовке в формате UNICODE, а его длина определяется 8-разрядным полем, расположенным по смещению 09h
байт от начала атрибутного заголовка.
Если тело атрибута сжато, зашифровано или разрежено, 16-разрядное поле флагов, расположенное по смещению 0Ch
байт от начала атрибутного заголовка, не равно нулю.
Основные поля резидентных и нерезидентных атрибутов кратко описаны в табл. 6.4 и 6.5. Остальные поля не играют существенной роли, и потому здесь они не рассматриваются.
Смещение | Размер (байт) | Значение | Описание | |
---|---|---|---|---|
00h | 4 | Тип атрибута (например, 0x10 , 0x60 , 0xB0 ) | ||
04h | 4 | Длина атрибута, включая этот заголовок | ||
08h | 1 | 00h | Флаг нерезидентности (non-resident flag) | |
09h | 1 | N | Длина имени атрибута (ноль, если атрибут безымянный) | |
0Ah | 2 | 18h | Смещение имени (ноль, если атрибут безымянный) | |
0Ch | 2 | 00h | Флаги | |
Значение | Описание | |||
0001h | Сжатый атрибут (compressed) | |||
4000h | Зашифрованный атрибут (encrypted) | |||
8000h | Разреженный атрибут (sparse) | |||
0Eh | 2 | Идентификатор атрибута (attribute ID) | ||
10h | 4 | L | Длина тела атрибута, без заголовка | |
14h | 2 | 2N+18h | Смещение тела атрибута | |
16h | 1 | Индексный флаг | ||
17h | 1 | 00h | Используется для выравнивания | |
18h | 2N | UNICODE | Имя атрибута (если есть) | |
2N+18h | L | Тело атрибута |