Транзакционная NTFS (TxF) — технология в Windows Vista и последующих операционных системах, позволяющая производить файловые операции на разделе с файловой системой NTFS при помощи транзакций, обеспечивая поддержку семантики атомарности, согласованности, изолированности и надёжности (ACID). Технология позволяет производить атомарные операции над файлом, над несколькими файлами и над несколькими источниками данных, такими, как реестр и базы данных. Технология призвана повышать надёжность создаваемых приложений, способствуя поддержанию целостности данных, и упрощать их разработку благодаря значительному уменьшению количества кода обработки ошибок.
Менеджер транзакций ядра (KTM) реализует транзакционную NTFS и транзакционный реестр (TxR). Для разработки приложений, выполняющих транзакции с иными ресурсами, необходимо разработать сервис поддержки транзакций, также называемый менеджером ресурсов. Приложения COM+ должны использовать свой нативный менеджер транзакций.
Менеджер транзакций ядра может работать непосредственно с координатором распределённых транзакций (DTC), что даёт возможность приложениям, работающим с DTC, объединять транзакционные файловые операции с операциями других транзакционных технологий в одну транзакцию.
Типичное использование транзакционной NTFS состоит из следующих шагов:
создание транзакции;
получение дескриптора файла (все операции с использованием данного дескриптора будут транзакционными);
внесение изменений в файл или файлы;
закрытие всех файловых дескрипторов;
подтверждение или откат транзакции.
Для операций, работающих с дескрипторами, используются обычные файловые функции Win32 API (например, WriteFile). Для операций, использующих имена файлов, имеются явные транзакционные функции.
Некоторые транзакционные функции
Транзакционная функция
Нетранзакционный аналог
Описание
CreateTransaction
Создание транзакции
CreateFileTransacted
CreateFile
Создание (открытие) файла
CopyFileTransacted
CopyFileEx
Копирование файла
MoveFileTransacted
MoveFileWithProgress
Перемещение файла или каталога
DeleteFileTransacted
DeleteFile
Удаление файла
CreateDirectoryTransacted
CreateDirectoryEx
Создание каталога
RemoveDirectoryTransacted
RemoveDirectory
Удаление каталога
RollbackTransaction
Откат транзакции
CommitTransaction
Фиксация транзакции
Другим способом является использование TxF через DTC. Для этого необходимо:
открыть менеджер транзакций (DTC), создать транзакцию;
из интерфейса DTC ITransaction получить интерфейс IKernelTransaction;
получить дескриптор транзакции KTM и использовать его в последующих транзакционных файловых операциях;
подтвердить или откатить транзакцию DTC.
Однако Microsoft настоятельно не рекомендует разработчикам использовать TxF в приложениях и предупреждает, что технология может быть недоступна в будущих версиях Microsoft Windows.