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


Функция 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 Да
Отработка отказа SMB 3.0 (TFO) Нет
SMB 3.0 с масштабируемыми общими папками (SO) Нет
Файловая система общего тома кластера (CSVFS) Да
Отказоустойчивая файловая система (ReFS) Нет
 

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

Заметка

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка winbase.h (включая Windows.h)
библиотеки Kernel32.lib
DLL Kernel32.dll

См. также

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

GetShortPathName