Транзакційна NTFS (TxF) — технологія у Windows Vista і наступних операційних системах, яка дозволяє проводити файлові операції на розділі з файловою системою NTFS за допомогою транзакцій, забезпечуючи підтримку семантики атомарності, узгодженості, ізольованості і надійності (ACID). Технологія дозволяє виробляти атомарні операції над файлом, над декількома файлами і над декількома джерелами даних, такими, як реєстр і бази даних. Технологія покликана підвищувати надійність створюваних додатків, сприяючи підтриманню цілісності даних, і спрощувати їх розробку, завдяки значному зменшенню кількості коду обробки помилок.

Однак Microsoft настійно не рекомендує розробникам використовувати TxF в додатках і попереджає, що технологія може бути недоступною в майбутніх версіях Microsoft Windows.[1][2]

Менеджер транзакцій ред.

Менеджер транзакцій ядра (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.

Примітки ред.

  1. About Transactional NTFS // docs.microsoft.com. — . — Дата звернення: 27.10.2019. — Цитата: «Microsoft strongly recommends developers utilize alternative means to achieve your application s needs. Many scenarios that TxF was developed for can be achieved through simpler and more readily available techniques. Furthermore, TxF may not be available in future versions of Microsoft Windows».
  2. Alternatives to using Transactional NTFS / Microsoft // MSDN. — Дата звернення: 30 червня 2015.

Посилання ред.