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

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

Синтаксис

BOOL SetFileShortNameA(
  [in] HANDLE hFile,
  [in] LPCSTR 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 Да
Прозрачная отработка отказа (TFO) SMB 3.0 Нет
SMB 3.0 с масштабируемыми общими папками (SO) Нет
Файловая система общего тома кластера (CSVFS) Да
Восстанавливаемая файловая система (ReFS) Нет
 

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

Примечание

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

Требования

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

См. также

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

GetShortPathName