Функция 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 Transparent Failover (TFO) | Нет |
SMB 3.0 с масштабируемыми общими папками (SO) | Нет |
Файловая система общего тома кластера (CSVFS) | Нет |
Восстанавливаемая файловая система (ReFS) | Нет |
Обратите внимание, что SMB 3.0 не поддерживает TxF.
Примечание
Заголовок winbase.h определяет CreateHardLinkTransacted в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |