Журнал USN для жестких ссылок

Если у меня есть каталог с несколькими жесткими ссылками, указывающими на файлы вне каталога, изменение одной из жестких ссылок повлияет на журнал USN, связанный с каталогом, или на журнал USN исходного каталога, который содержит фактический файл для какие жесткие ссылки связаны в момент их создания?

1 ответ

Решение

Журнал получит запись, когда вы добавите жесткую ссылку USN_REASON_HARD_LINK_CHANGE. Затем со временем могут быть открыты любые жесткие ссылки и внесены изменения. Все последующие записи USN будут ссылаться на FileReferenceNumber исходного файла, но будут содержать FileName и ParentFileReferenceNumber, которые зависят от того, какая ссылка была фактически открыта. Это то, что у вас есть, чтобы различать ссылки. Обратите внимание, что может быть заманчиво различать, используя только ParentFileReferenceNumber, но это не совсем безопасно. В то время как наиболее широко используемый шаблон - иметь одноименную ссылку в разных каталогах, вы можете иметь ссылку в одном и том же каталоге, но с другим именем.

Примечание по перемещенным ссылкам. Если вы решите прочитать USN в "режиме итога" (для READ_USN_JOURNAL_DATA_V0 задано значение ReturnOnlyOnClose = 1), где вы читаете только те записи, которые накопились до момента закрытия файла, вы можете пропустить записи USN_REASON_RENAME_OLD_NAME.... и не отслеживать, по какой ссылке было сделано переименование. Такого рода записи USN не накапливаются в событии закрытия файла... Я предполагаю, что из-за возможного столкновения ParentFileReferenceNumber и FileName.

Другие вопросы по тегам