Точки Повторной Обработки Ntfs

Привет, Хабр.

Представляю вам руководство по точкам Reparse NTFS (далее RP), точкам повторной обработки.

Эта статья для тех, кто только начинает постигать тонкости разработки ядра Windows и его среды.

Вначале я объясню теорию на примерах, затем приведу интересную задачу.



Точки повторной обработки NTFS

RP — одна из ключевых особенностей файловой системы NTFS, которая может быть полезна при решении задач резервного копирования и восстановления.

В результате Acronis очень заинтересовалась этой технологией.



Полезные ссылки

Если вы хотите сами разобраться в теме, прочтите эти источники.

Теоретическая часть, которую вы увидите ниже, представляет собой краткий пересказ материалов из этого списка.



Теория

Точка повторной обработки или точка повторной обработки (RP) — это объект заданного размера с данными, определенными программистом, и уникальным тегом.

Пользовательский объект представлен структурой REPARSE_GUID_DATA_BUFFER .

  
   

typedef struct _REPARSE_GUID_DATA_BUFFER { ULONG ReparseTag; USHORT ReparseDataLength; USHORT Reserved; GUID ReparseGuid; struct { UCHAR DataBuffer[1]; } GenericReparseBuffer; } REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER;

Размер блока данных RP достигает 16 килобайт. Репарсетаг — 32-битный тег.

Репарседатадлиненгс — размер данных Буфер данных - указатель на пользовательские данные RP, предоставляемые Microsoft, могут быть представлены структурой REPARSE_DATA_BUFFER .

Его не следует использовать для самостоятельно написанных RP. Рассмотрим формат тега:

Точки повторной обработки NTFS

М — Бит Майкрософт; Если этот бит установлен, тег был разработан Microsoft. л — Бит задержки; Если этот бит установлен, то данные, на которые ссылается RP, находятся в среде с низкой скоростью отклика и высокой задержкой вывода данных.

р — Зарезервированный бит; Н — Бит замены имени; Если этот бит установлен, файл или каталог представляет другой именованный объект в файловой системе.

Значение тега — Запрошено у Microsoft; Каждый раз, когда приложение создает или удаляет RP, NTFS обновляет файл метаданных.

\\$Расширить\\$Повторить .

Именно в этом файле хранятся записи РП.

Это централизованное хранилище позволяет любому приложению сортировать и эффективно искать необходимый объект. Через механизм RP в Windows реализована поддержка символических ссылок, удаленной системы хранения, точек монтирования томов и каталогов.

Жесткие ссылки в Windows — это не реальный объект, а просто синоним одного и того же файла на диске.

Это не отдельные объекты файловой системы, а просто другое имя файла в таблице расположения файлов.

Вот чем жесткие ссылки отличаются от символических ссылок.

Чтобы использовать технологию RP нам нужно написать:

  • Небольшое приложение с привилегиями SE_BACKUP_NAME или SE_RESTORE_NAME , который создаст файл, содержащий структуру RP, задайте обязательное поле Репарсетаг и заполните Буфер данных
  • Драйвер режима ядра, который будет читать данные буфера и обрабатывать доступ к этому файлу.



Давайте создадим свой файл с RP

1. Получение необходимых привилегий

void GetPrivilege(LPCTSTR priv) {

Теги: #Разработка для Windows #обратное проектирование #ntfs #ядро Windows #Acronis #точки повторной обработки
Вместе с данным постом часто просматривают: