Функция CreateHardLinkTransactedA (winbase.h)
[Корпорация Майкрософт настоятельно рекомендует разработчикам использовать альтернативные средства для достижения потребностей вашего приложения. Многие сценарии, для которые TxF был разработан, можно достичь с помощью более простых и более доступных методов. Кроме того, TxF может быть недоступна в будущих версиях Microsoft Windows. Дополнительные сведения и альтернативные варианты TxF см. в разделе Альтернативные варианты использования транзакционных NTFS.]
Устанавливает жесткую связь между существующим файлом и новым файлом в виде транзакции. Эта функция поддерживается только в файловой системе NTFS, а только для файлов, а не каталогов.
Синтаксис
BOOL CreateHardLinkTransactedA(
[in] LPCSTR lpFileName,
[in] LPCSTR lpExistingFileName,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
[in] HANDLE hTransaction
);
Параметры
[in] lpFileName
Имя нового файла.
Этот параметр не может указать имя каталога.
[in] lpExistingFileName
Имя существующего файла.
Этот параметр не может указать имя каталога.
lpSecurityAttributes
Скрытный; должен быть null.
[in] hTransaction
Дескриптор транзакции. Этот дескриптор возвращается функцией CreateTransaction.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение ненулевое.
Если функция завершается ошибкой, возвращаемое значение равно нулю (0). Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Максимальное количество жестких ссылок, которые можно создать с помощью этой функции, составляет 1023 на файл. Если для файла создаются более 1023 ссылок, результаты ошибки.
Файлы должны находиться на локальном компьютере; в противном случае функция завершается ошибкой, а для последнего кода ошибки задано значение ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE.
Замечания
Любая запись каталога для файла, созданного с помощью CreateFileTransacted или CreateHardLinkTransacted является жесткой ссылкой на связанный файл. Дополнительная жесткая ссылка, созданная с помощью функции CreateHardLinkTransacted, позволяет иметь несколько записей каталога для файла, то есть несколько жестких ссылок на один и тот же файл, которые могут быть разными именами в одном каталоге, или одинаковыми или разными именами в разных каталогах. Однако все жесткие ссылки на файл должны находиться в одном томе.
Так как жесткие ссылки являются только записями каталога для файла, когда приложение изменяет файл с помощью любой жесткой ссылки, все приложения, использующие любую другую жесткую ссылку на файл, видят изменения. Кроме того, все записи каталога обновляются при изменении файла. Например, если размер файла изменяется, все жесткие ссылки на файл отображают новый размер файла.
Дескриптор безопасности принадлежит файлу, к которому указываются жесткие точки связи. Сама ссылка является только записью каталога и не имеет дескриптора безопасности. Поэтому при изменении дескриптора безопасности жесткой ссылки вы изменяете дескриптор безопасности базового файла, а все жесткие ссылки, указывающие на файл, разрешают только что указанный доступ. Вы не можете предоставить файлу разные дескрипторы безопасности на основе жесткой связи.
Эта функция не изменяет дескриптор безопасности файла, который должен быть связан, даже если сведения дескриптора безопасности передаются в параметре lpSecurityAttributes.
Используйте DeleteFileTransacted для удаления жестких ссылок. Их можно удалить в любом порядке независимо от порядка их создания.
Флаги, атрибуты, доступ и общий доступ, указанные в CreateFileTransacted работают на основе каждого файла. То есть, если открыть файл, который не разрешает общий доступ, другое приложение не может предоставить общий доступ к файлу, создав новую жесткую ссылку на файл.
При создании жесткой ссылки в файловой системе NTFS сведения о атрибуте файла в записи каталога обновляются только при открытии файла или при вызове GetFileInformationByHandle с дескриптором определенного файла.
символьные ссылки: Если путь указывает на символьную ссылку, функция создает жесткую ссылку на целевой объект.
В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.
Технологии | Поддержанный |
---|---|
Протокол SMB 3.0 | Нет |
Отработка отказа SMB 3.0 (TFO) | Нет |
SMB 3.0 с масштабируемыми общими папками (SO) | Нет |
Файловая система общего тома кластера (CSVFS) | Нет |
Отказоустойчивая файловая система (ReFS) | Нет |
Обратите внимание, что SMB 3.0 не поддерживает TxF.
Заметка
Заголовок winbase.h определяет CreateHardLinkTransacted как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2008 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | winbase.h (включая Windows.h) |
библиотеки |
Kernel32.lib |
DLL | Kernel32.dll |