Влияние символьных ссылок на функции файловых систем
Использование символических ссылок влияет на несколько стандартных функций файлов, использующих имена путей для указания одного или нескольких файлов. В этом разделе перечислены эти функции и описаны изменения в поведении:
- CopyFile и CopyFileTransacted
- CopyFileEx
- CreateFile и CreateFileTransacted
- CreateHardLink и CreateHardLinkTransacted
- DeleteFile и DeleteFileTransacted
- FindFirstChangeNotification
- FindFirstFile и FindFirstFileTransacted
- FindFirstFileEx
- FindNextFile
- GetBinaryType
- GetCompressedFileSize и GetCompressedFileSizeTransacted
- GetDiskFreeSpace
- GetDiskFreeSpaceEx
- GetFileAttributes
- GetFileAttributesEx
- GetFileSecurity
- GetTempPath
- GetVolumeInformation
- SetFileAttributes
- SetFileSecurity
- Связанные темы
В описаниях ниже используются следующие термины:
- Исходный файл — исходный файл, который требуется скопировать.
- Целевой файл — только что созданная копия файла.
- Целевой объект — сущность, на которую указывает символьная ссылка.
Примечание
Поведение функций, которые принимают дескриптор, созданный с помощью функции CreateFile , например GetFileTime , будет отличаться в зависимости от того, была ли функция CreateFile вызвана с помощью флага FILE_FLAG_OPEN_REPARSE_POINT . Дополнительные сведения см. в разделах 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 , затронутый файл является целевым объектом.
CreateHardLink и CreateHardLinkTransacted
Если путь указывает на символьную ссылку, функция создает жесткую ссылку на целевой объект.
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
Если путь указывает на символьную ссылку, функция возвращает атрибуты для символьной ссылки.
Связанные темы