Comments 12
docs.microsoft.com/en-us/windows/win32/fileio/about-transactional-ntfs
Да, я тоже это заметил. Возможно, имеется ввиду именно Win32 API, поскольку в документации для драйверов об этом ничего нет. Учитывая, что я пользуюсь именно Native API, а также то, насколько Microsoft бережно относится к его обратной совместимости, надеюсь, они не уберут транзакции в ближайшем будущем.
В NTFS есть две кошмарно медленные вещи: сжатие и TxF. Они настолько медленные и неэффективные относительно современного уровня развития подобных технологий, что ими пользуются только по незнанию реального положения дел.
Тем не менее, думаю можно быть уверенными в том, что ни "компрессию" ни "транзакции" никогда не выпилят из NTFS. M$ либо оставит всё как есть до смерти Windows, либо перейдет на новую файловую систему без этих deprecated features.
Про deprecated ответил выше. В конце-концов это всего лишь эксперимент, вся идея для программы и статьи возникла из неожиданной простоты реализации. Посмотрим.
В итоге выяснилось, что производительность файловых транзакционных операций очень низкая, а уж откат транзакции (об этом есть в описании АПИ) еще медленнее.
Так что думаю, для песочницы не особо сгодится, только для маленьких операций. И да, deprecated уже очень давно и с неизвестным сроком окончания.
- Будет ли отслеживать изменения в директории произведенные внутри одной транзакции
- Будет ли отслеживать изменения в директории произведенные из всех транзакций
Отличный вопрос. Как и ожидалось, всегда видны изменения снаружи транзакций + внутри той, где был открыт дескриптор директории. Изоляция работает предсказуемо.
Transacted Operations
If there is a transaction bound to the directory handle, then the notifications follow the appropriate transaction isolation rules.
Меня это ещё вот на какую мысль навело. Тот же Process Monitor имеет минифильтр в режиме ядра, а значит видит все операции. Но он не показыает, в контексте какой транзакции они были проведены. Получается, что транзакции — идеальный инструмент для запутывания логов Process Monitor'a =)
Заставляем любой процесс работать с транзакционной NTFS: мой первый шаг к созданию песочницы для Windows