Поделиться через


Эффекты символьной связи для функций файловых систем

Несколько стандартных функций файлов, использующих имена путей для указания одного или нескольких файлов, влияют на использование символьных ссылок. В этом разделе перечислены эти функции и описываются изменения в поведении:

В приведенных ниже описаниях используются следующие термины:

  • Исходный файл — исходный файл, который нужно скопировать.
  • Целевой файл — только что созданная копия файла.
  • Целевой объект — сущность, на которую указывает символьная ссылка.

Заметка

Поведение функций, которые принимают дескриптор, созданный с помощью функции CreateFileCreateFile, например функцию GetFileTime, будут отличаться в зависимости от того, была ли вызвана функция CreateFile с помощью флага FILE_FLAG_OPEN_REPARSE_POINT. Дополнительные сведения см. в разделе CreateFile и следующем разделе CreateFile и CreateFileTransacted.

 

CopyFile и CopyFileTransacted

Если исходный файл является символьной ссылкой, фактически скопированный файл является целевым объектом символьной ссылки.

Если целевой файл уже существует и является символьной ссылкой, цель символьной ссылки перезаписывается исходным файлом.

CopyFileEx

Если указан COPY_FILE_COPY_SYMLINK, и выполните указанные ниже действия.

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

Если COPY_FILE_COPY_SYMLINK не задано, и:

  • Если COPY_FILE_FAIL_IF_EXISTS также указан, а целевой файл является существующей символьной ссылкой, операция завершается ошибкой, только если целевой объект символьной ссылки существует.
  • Если COPY_FILE_FAIL_IF_EXISTS не задано, в поведении нет изменений.

Windows Server 2003 и Windows XP: флаг COPY_FILE_COPY_SYMLINK не поддерживается. Если исходный файл является символьной ссылкой, фактически скопированный файл является целевым объектом символьной ссылки.

CreateFile и CreateFileTransacted

Если вызов этой функции создает новый файл, изменения в поведении не изменяются.

Если FILE_FLAG_OPEN_REPARSE_POINT указан и:

  • Если существующий файл открыт и является символьной ссылкой, возвращенный дескриптором является дескриптор символьной ссылкой.
  • Если указаны CREATE_ALWAYS, TRUNCATE_EXISTINGили FILE_FLAG_DELETE_ON_CLOSE, затронутый файлом является символьная ссылка.

Если FILE_FLAG_OPEN_REPARSE_POINT не указан и:

  • Если существующий файл открыт и является символьной ссылкой, возвращенный дескриптором является дескриптор целевого объекта.
  • Если указаны CREATE_ALWAYS, TRUNCATE_EXISTINGили FILE_FLAG_DELETE_ON_CLOSE, затронутый файлом является целевой объект.

Если путь указывает на символьную ссылку, функция создает жесткую ссылку на целевой объект.

DeleteFile и DeleteFileTransacted

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

FindFirstChangeNotification

Если путь указывает на символьную ссылку, для целевого объекта создается дескриптор уведомлений. Если приложение зарегистрировано для получения уведомлений об изменениях каталога, содержащего символьные ссылки, приложение уведомляется только при изменении символьных ссылок, а не целевых файлов.

FindFirstFile и FindFirstFileTransacted

Если путь указывает на символьную ссылку, буфер WIN32_FIND_DATA содержит сведения о символьной ссылке, а не целевом объекте.

FindFirstFileEx

Если путь указывает на символьную ссылку, буфер WIN32_FIND_DATA содержит сведения о символьной ссылке, а не целевом объекте.

FindNextFile

Если путь указывает на символьную ссылку, буфер WIN32_FIND_DATA содержит сведения о символьной ссылке, а не целевом объекте.

GetBinaryType

Если путь указывает на символьную ссылку, используется целевой файл.

GetCompressedFileSize и GetCompressedFileSizeTransacted

Если путь указывает на символьную ссылку, функция возвращает размер файла целевого объекта.

GetDiskFreeSpace

Если путь указывает на символьную ссылку, операция выполняется в целевом объекте.

GetDiskFreeSpaceEx

Если путь указывает на символьную ссылку, операция выполняется в целевом объекте.

GetFileAttributes

Если путь указывает на символьную ссылку, функция возвращает атрибуты для символьной ссылки.

GetFileAttributesEx

Если путь указывает на символьную ссылку, функция возвращает атрибуты для символьной ссылки.

GetFileSecurity

Если путь указывает на символьную ссылку, функция возвращает атрибуты для символьной ссылки.

GetTempPath

Если путь указывает на символьную ссылку, имя временного пути сохраняет любые символьные ссылки.

GetVolumeInformation

Если путь указывает на символьную ссылку, функция возвращает сведения о томе для целевого объекта.

SetFileAttributes

Если путь указывает на символьную ссылку, функция извлекает атрибуты для символьной ссылки.

SetFileSecurity

Если путь указывает на символьную ссылку, функция возвращает атрибуты для символьной ссылки.

CopyFile

CopyFileTransacted

CopyFileEx

CreateFile

CreateFileTransacted

CreateHardLink

CreateHardLinkTransacted

DeleteFile

DeleteFileTransacted

FindFirstChangeNotification

FindFirstFile

FindFirstFileEx

FindFirstFileTransacted

FindNextFile

GetBinaryType

GetCompressedFileSize

GetCompressedFileSizeTransacted

GetDiskFreeSpace

GetDiskFreeSpaceEx

GetFileAttributes

GetFileAttributesEx

GetFileSecurity

GetTempPath

GetVolumeInformation

SetFileAttributes

SetFileSecurity