Структура INDEX_BLOCK_HEADER

Код AttributeIndexAllocation и структура INDEX_BLOCK_HEADER




Структура INDEX_BLOCK_HEADER это одна из дисковых структур NTFS. Её данные служат также для объяснения содержимого буфера FileRecordBuffer, возвращаемого при вызове NtFsControlFile с кодом FSCTL_GET_NTFS_FILE_RECORD.

Атрибут размещения индекса в памяти представляет собой массив индексных блоков. Каждый индексный блок начинается со структуры INDEX_BLOCK_HEADER, за которой следует несколько структур DIRECTORY_ENTRY.

Структура INDEX_BLOCK_HEADER

typedef struct {
  NTFS_RECORD_HEADER Ntfs;
  ULONGLONG IndexBlockVcn;
  DIRECTORY_INDEX DirectoryIndex;
} INDEX_BLOCK_HEADER, *PINDEX_BLOCK_HEADER;

Ntfs
Структура NTFS_RECORD_HEADER, параметр Type которой содержит значение 'INDX'

IndexBlockVcn
VCN индексного блока.

Directoryindex
Структура DIRECTORY_INDEX.

Структура DIRECTORY_INDEX

typedef struct {
  ULONG EntriesOffset;
  ULONG IndexBlockLength;
  ULONG AllocatedSize;
  ULONG Flags; // 0x00 = Маленький каталог, 0x01 = Большой каталог
} DIRECTORY_INDEX, *PDIRECTORY_INDEX;

EntriesOffset
Смещение в байтах от начала структуры до первой структуры DIRECTORY_ENTRY.

IndexBlockLength
Размер в байтах используемой части индексного блока.

AllocatedSize
Размер в байтах дискового пространства, выделенного для индексного блока.

Flags
Битовый массив флагов, определяющих свойства индекса. Определены следующие значения:


SmallDirectory      0x0000       Каталог находится в корне индекса
LargeDirectory      0x0001       Каталог выходит за пределы корня индекса

Структура DIRECTORY_ENTRY

typedef struct {
  ULONGLONG FileReferenceNumber;
  USHORT Length;
  USHORT AttributeLength;
  ULONG Flags; // 0x01 = После следует VCN, 0x02 = Последний элемент
  // FILENAME_ATTRIBUTE Name;
  // ULONGLONG Vcn; // VCN более ранних элементов в IndexAllocation
} DIRECTORY_ENTRY, *PDIRECTORY_ENTRY;

FileReferenceNumber
Номер ссылки на файл, описываемый элементом каталога.

Length
Размер в байтах элемента каталога.

AttributeLength
Размер в байтах индексируемого атрибута.

Flags
Битовый массив флагов, определяющих свойства элемента. Определены следующие значения:


* HasTrailingVcn 0x0001 // За индексированным атрибутом следует VCN
* LastEntry 0x0002 //   Последний элемент и индексном блоке

См. также

Список типов атрибутов дисковой структуры NTFS

По теме NTFS также есть следующее:


При копировании материалов хорошим тоном будет указание авторства и ссылка на сайт.