Привет, Хабр.
Представляю вам руководство по точкам Reparse NTFS (далее RP), точкам повторной обработки.
Эта статья для тех, кто только начинает постигать тонкости разработки ядра Windows и его среды.
Вначале я объясню теорию на примерах, затем приведу интересную задачу.
RP — одна из ключевых особенностей файловой системы NTFS, которая может быть полезна при решении задач резервного копирования и восстановления.
В результате Acronis очень заинтересовалась этой технологией.
Полезные ссылки
Если вы хотите сами разобраться в теме, прочтите эти источники.Теоретическая часть, которую вы увидите ниже, представляет собой краткий пересказ материалов из этого списка.
- Официальная документация от MSDN: docs.microsoft.com/en-us/windows/win32/fileio/reparse-points
- М.
Руссинович, Д.
Соломон, А.
Ионеску, Внутренняя структура Microsoft Windows. 6-е изд. Базовые подсистемы ОС.
Страница 535.
- Краткое и удобное руководство: hex.pp.ua/reparse-point-custom.php
- Очень крутой проект с использованием RP: github.com/aleksk/LazyCopy
- Решение проблемы, о котором мы поговорим ниже: github.com/Dabudabot/injection-monitor
Теория
Точка повторной обработки или точка повторной обработки (RP) — это объект заданного размера с данными, определенными программистом, и уникальным тегом.Пользовательский объект представлен структурой REPARSE_GUID_DATA_BUFFER .
Размер блока данных RP достигает 16 килобайт. Репарсетаг — 32-битный тег.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, предоставляемые Microsoft, могут быть представлены структурой REPARSE_DATA_BUFFER .
Его не следует использовать для самостоятельно написанных RP.
Рассмотрим формат тега:
М — Бит Майкрософт; Если этот бит установлен, тег был разработан 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 #точки повторной обработки
-
Винил Вернулся, И Он Другой
19 Oct, 24 -
Семантическая Файловая Система
19 Oct, 24 -
Купишь Ли Ты Айфон?
19 Oct, 24 -
Методы Оценки Качества Прогноза
19 Oct, 24 -
Кто Ваши Соседи?
19 Oct, 24 -
Германия Вводит Налог На Интернет-Устройства
19 Oct, 24 -
Военный Ии Организует Жизнь Граждан
19 Oct, 24 -
Выпуск Ide Qt Creator 3.3
19 Oct, 24