Материал из РУВИКИ — свободной энциклопедии

Транзакционная NTFS

Транзакционная 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.

Ссылки[править | править код]