hex.pp.ua

Разбираюсь с USN

Разбираюсь с USN




В NTFS и ReFS есть журнал изменений файлов. Я разбираюсь в его устройстве, чтобы добавить чтение информации оттуда в NTFS Stream Explorer. Пока выяснилось следующее:

Вызов FSCTL_READ_FILE_USN_DATA позволяет получить некоторые данные, но в нём нет самых главных данных: метки времени (когда запись появилась в журнале), причины и источника записи. Эти поля возвращаются всегда пустыми. И вообще, похоже, этот вызов не обращается к журналу, он просто берёт некоторые метаданные, среди которых есть номер USN. Все эти данные вообще-то можно получить и другими вызовами. Так что вызов довольно бесполезный. Но, по крайней мере, возвращает номер записи USN.

По-настоящему получить информацию о файле из USN журнала можно двумя другими вызовами: FSCTL_QUERY_USN_JOURNAL и FSCTL_READ_USN_JOURNAL. Первый вызов даёт текущий идентификатор журнала USN, этот номер используется в следующем вызове. Дальше FSCTL_READ_USN_JOURNAL уже возвращает всю необходимую инфу, включая поля Reason, SourceInfo и TimeStamp. И делаются эти вызовы над открытым хэндлом тома, а не файла. Ну, ясное дело, журнал-то относится к тому целиком.

Выяснилось, что журнал может быть двух версий: 2.0 и 3.0. Последняя версия только на Windows 8 и Windows Server 2012. Там всё отличие заключается только в том, что идентификаторы файла стали 128-битные. Поддержку новой версии журнала я тоже, естественно, реализую.

Вообще, я подумал, что после того, как я выпущу новую версию программы, надо бы её где-нибудь продвинуть. Ну, делают же люди всякие загрузочные диски с разными инструментами для восстановления на основе Windows PE. Думаю, надо договориться о том, чтобы включали мою программу в состав своих образов. Думаю, ещё написать про программу статью на Хабр. Вообще, думаю, она мало кому нужна на самом деле.

Ниша моей программы, как мне видится, такая:

  1. Системные администраторы, использующие технологии Microsoft, которые завязаны на всякие фишки NTFS. При каких-то неполадках можно будет рассмотреть какой-то конкретный заглючивший файл, посмотреть, что у него там в метаданных не так.
  2. Разработчики софта, который использует метаданные NTFS. Думаю, очень немного таких. Для них это будет просто вспомогательный инструмент.
  3. Просто интересующиеся внутренним устройством NTFS и других файловых систем.
  4. Любители прятать файлы от мамы (или препода, или админа в институте). Для них моя программа может предложить поддержку пресловутых NTFS-потоков.

Ну и, как только разберусь полностью с журналом USN, напишу материал на этот сайт, уже с примерами кода.

Опубликовано 15.12.2012 15:47:44

система комментирования CACKLE
система комментирования CACKLE

Автор: амдф


Разделы сайта
Главная
Блог
Native API
NTFS и ReFS
Микроконтроллеры
Справочник NTDLL
Коды NTSTATUS
Разное

Избранное
NTFS Stream Explorer
Native Shell
Тенгвар

Остальное
nvpnhcknn (архив)
English pages
Контакты

Ленты atom
Лента Atom сайта Лента Atom блога



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