Функция DeleteFileTransactedA (winbase.h)

[Корпорация Майкрософт настоятельно рекомендует разработчикам использовать альтернативные средства для удовлетворения потребностей вашего приложения. Многие сценарии, для работы с которыми был разработан TxF, можно реализовать с помощью более простых и доступных методов. Кроме того, TxF может быть недоступен в будущих версиях Microsoft Windows. Дополнительные сведения и альтернативы TxF см. в разделе Альтернативы использованию транзакционной NTFS.]

Удаляет существующий файл как транзакцию.

Синтаксис

BOOL DeleteFileTransactedA(
  [in] LPCSTR lpFileName,
  [in] HANDLE hTransaction
);

Параметры

[in] lpFileName

Имя файла, предназначенного для удаления.

По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 символов в ширину, добавьте к пути "\\?\". Дополнительные сведения см. в статье Именование файлов, путей и пространств имен.

Совет

Начиная с Windows 10 версии 1607, вы можете согласиться на удаление ограничения MAX_PATH без добавления в начало "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .

Файл должен находиться на локальном компьютере; В противном случае функция завершается сбоем, а для последнего кода ошибки задано значение ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE.

[in] hTransaction

Дескриптор транзакции. Этот дескриптор возвращается функцией CreateTransaction .

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция завершается сбоем, возвращается значение 0 (ноль). Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Если приложение пытается удалить файл, который не существует, функция DeleteFileTransacted завершаетсясбоем с ERROR_FILE_NOT_FOUND. Если файл доступен только для чтения, функция завершается сбоем с ERROR_ACCESS_DENIED.

В следующем списке приведены некоторые советы по удалению, удалению или закрытию файлов.

  • Чтобы удалить файл, доступный только для чтения, сначала необходимо удалить атрибут только для чтения.
  • Чтобы удалить или переименовать файл, необходимо иметь разрешение на удаление файла или разрешение на удаление дочернего элемента в родительском каталоге.
  • Чтобы рекурсивно удалить файлы в каталоге, используйте функцию SHFileOperation .
  • Чтобы удалить пустой каталог, используйте функцию RemoveDirectoryTransacted .
  • Чтобы закрыть открытый файл, используйте функцию CloseHandle .
Если вы настроили каталог со всеми доступами, кроме удаления и удаления дочерних элементов, а списки управления доступом (ACL) новых файлов наследуются, можно создать файл, не удаляя его. Однако затем можно создать файл, а затем получить весь запрашиваемый доступ к дескриптору, который возвращается вам при создании файла.

Если вы запросите разрешение на удаление во время создания файла, вы можете удалить или переименовать файл с помощью этого дескриптора, но не с любым другим дескриптором. Дополнительные сведения см. в разделе Безопасность файлов и права доступа.

Функция DeleteFileTransacted завершается сбоем, если приложение пытается удалить файл с открытыми другими дескрипторами для обычного ввода-вывода или в виде сопоставленного в памяти файла (FILE_SHARE_DELETE должно быть указано при открытии других дескрипторов).

Функция DeleteFileTransacted помечает файл для удаления при закрытии. Файл удаляется после закрытия последнего дескриптора модуля записи транзакций для файла при условии, что транзакция по-прежнему активна. Если файл помечен для удаления, а дескриптор записи транзакций по-прежнему открыт после завершения транзакции, файл не будет удален.

Символьные ссылки: Если путь указывает на символьную ссылку, символьная ссылка удаляется, а не целевой объект. Чтобы удалить целевой объект, необходимо вызвать CreateFile и указать FILE_FLAG_DELETE_ON_CLOSE.

В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.

Технология Поддерживается
Протокол SMB 3.0 Нет
SMB 3.0 Transparent Failover (TFO) Нет
SMB 3.0 с масштабируемыми общими папками (SO) Нет
Файловая система общего тома кластера (CSVFS) Нет
Восстанавливаемая файловая система (ReFS) Нет
 

SMB 3.0 не поддерживает TxF.

Примечание

Заголовок winbase.h определяет DeleteFileTransacted в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CloseHandle

CreateFileTransacted

Функции управления файлами

Символьные ссылки

Поддержка транзакций в NTFS