Поделиться через


Использование идентификатора журнала изменений

Файловая система NTFS связывает 64-разрядный идентификатор без знака с каждым журналом изменений. Журнал помечен этим идентификатором при его создании. Файловая система помеет журнал новым идентификатором, в котором существующие записи с порядком обновления (USN) либо являются, либо могут быть непригодными для использования.

Например, файловая система NTFS переназначает журнал изменений с новым идентификатором при перемещении тома из одной версии NTFS в другую, а затем обратно. Такое перемещение может произойти в среде с двойной загрузкой или при работе со съемным носителем.

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

Когда администратор удаляет и повторно создает журнал изменений, например когда текущее значение USN приближается к максимально возможному значению USN, значения USN начинаются снова с нуля. Когда файловая система NTFS помечает журнал с новым идентификатором, а не повторно создает журнал, она не сбрасывает usN до нуля, а продолжает переходить от текущего usN. В любом случае все существующие usN меньше, чем любые будущие usn.

Если вам нужны сведения об определенном наборе записей, используйте код элемента управления FSCTL_QUERY_USN_JOURNAL , чтобы получить идентификатор журнала изменений. Затем используйте код элемента управления FSCTL_READ_USN_JOURNAL для чтения интересующих записей журнала. Файловая система NTFS возвращает только те записи, которые являются допустимыми для журнала, указанного идентификатором.

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

Чтобы получить интересующие вас записи, необходимо начать с самой старой записи (т. е. с самого низкого USN) и сканировать вперед, пока не найдете первую интересующую запись.