Разбираюсь с 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. Думаю, надо договориться о том, чтобы включали мою программу в состав своих образов. Думаю, ещё написать про программу статью на Хабр. Вообще, думаю, она мало кому нужна на самом деле.
Ниша моей программы, как мне видится, такая:
- Системные администраторы, использующие технологии Microsoft, которые завязаны на всякие фишки NTFS. При каких-то неполадках можно будет рассмотреть какой-то конкретный заглючивший файл, посмотреть, что у него там в метаданных не так.
- Разработчики софта, который использует метаданные NTFS. Думаю, очень немного таких. Для них это будет просто вспомогательный инструмент.
- Просто интересующиеся внутренним устройством NTFS и других файловых систем.
- Любители прятать файлы от мамы (или препода, или админа в институте). Для них моя программа может предложить поддержку пресловутых NTFS-потоков.
Ну и, как только разберусь полностью с журналом USN, напишу материал на этот сайт, уже с примерами кода.
Опубликовано 15.12.2012 15:47:44
система комментирования CACKLE система комментирования CACKLEАвтор: амдф
Избранное
Остальное
Ленты atom