Код 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 также есть следующее:
- Специальные файлы NTFS. О файлах типа $Volume, $MFT и подобных.
- Обход ограничений FAT32/NTFS (статья 2004 года).
- Использование NtFsControlFile для получение информации о файле на NTFS
- Предварительный взгляд на возможности файловой системы Protogon.
Избранное
Остальное
По вопросам сотрудничества и другим вопросам по работе сайта пишите на cleogroup[собака]yandex.ru