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


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

Задает короткое имя для указанного файла. Файл должен находиться в томе файловой системы NTFS.

Синтаксис

BOOL SetFileShortNameW(
  [in] HANDLE  hFile,
  [in] LPCWSTR lpShortName
);

Параметры

[in] hFile

Дескриптор файла. Файл должен быть открыт с правом доступа GENERIC_ALL или GENERIC_WRITE|DELETE, а также с атрибутом файла FILE_FLAG_BACKUP_SEMANTICS .

[in] lpShortName

Указатель на строку, указывающую короткое имя файла.

При указании пустой строки (нулевой длины) будет удалено короткое имя файла, если оно существует для файла, указанного параметром hFile . Если короткое имя файла не существует, функция не выполнит никаких действий и возвратит успешное выполнение.

Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Такое поведение не поддерживается. Параметр должен содержать допустимую строку из одного или нескольких символов.

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

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

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

Код возврата Описание
ERROR_ALREADY_EXISTS
Указанное короткое имя не является уникальным.
ERROR_INVALID_PARAMETER
Либо указанный файл был открыт в режиме с учетом регистра, либо указанное короткое имя является недопустимым.

Комментарии

Вызывающий объект этой функции должен иметь привилегию SE_RESTORE_NAME . Дополнительные сведения см. в разделе Выполнение с особыми привилегиями.

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

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

SMB 3.0 не поддерживает короткие имена в общих папках с возможностью непрерывной доступности . Короткие имена не рекомендуется использовать в CSVF.

Примечание

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

Требования

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

См. также

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

GetShortPathName