Сборник статей по настройке Windows


Структура реестра - часть 2


Таким образом, мы видим, что в индекс представляет собой каркас дерева, которое может состоять из (0FFFFFFFFh-10h)/1Ch=9249248h (153391688) элементов (где 0FFFFFFFFh - максимальный размер индекса, 10h - подзаголовок индекса, 1Ch размер записи в индексе), с условием того, что индекс в файле может быть только один (?).

Все данные (имена ключей, их параметры и значения параметров) находятся в блоках данных. Исходя из размера отведенного под количество этих блоков в заголовке файла реестра, видно, что их может быть не более 64k (65536). Хотя, как дальше будет видно, под размер самого блока данных отведено двойное слово, мне лично не довелось встречать блоки больше 0F000h байт. Если принять этот факт за правило, то не трудно вычислить максимальный размер файла реестра ~7,75Gb. Если же использовать возможности по "раздутию" файла на полную катушку, то размер одного файла может достичь совершенно немыслимых размеров ~256Tb.

Итак, блоки данных. Каждый блок данных имеет свой подзаголовок:

00h: 4 байта - "RGDB" сигнатура блока данных 04h: двойное слово - размер блока данных 08h: двойное слово - размер свободного раздела в блоке 0Ch: слово - (8) 0Eh: слово - номер блока данных 10h: двойное слово - указатель на свободный раздел 14h: слово - количество разделов в блоке (включая свободный раздел) 16h: слово - свободный номер для создания элемента 18h: 8 байт - выравнивание

Для каждого нового элемента создается свой раздел, начиная с начала свободного раздела. При удалении раздела данные в блоке сдвигаются, заполняя собой освободившееся место и увеличивая, тем самым, свободный раздел. При уменьшении размера информации внутри раздела, место не освобождается, а только меняется реальный размер записи (см. далее).

Записи в блоке данных имеют следующую структуру:

00h: двойное слово - размер записи 04h: слово - номер записи в блоке 06h: слово - номер блока данных 08h: двойное слово - реальный размер записи 0Ah: слово - размер имени ключа (n) 0Ch: слово - количество параметров 0Eh: n байт - имя ключа 0Eh+n: - информация о параметрах:



Начало  Назад  Вперед