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:不支持 此行为。 该参数必须包含一个或多个字符的有效字符串。

返回值

如果函数成功,则返回值为非零。

如果函数失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastErrorGetLastError 可能会返回以下特定于此函数的错误代码之一。

返回代码 描述
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 不支持具有连续可用性功能的共享的短名称。 CsvF 上不建议使用短名称。

注意

winbase.h 标头将 SetFileShortName 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows XP [仅限桌面应用]
支持的最低服务器 Windows Server 2003 [仅限桌面应用]
目标平台 窗户
标头 winbase.h (包括 Windows.h)
Kernel32.lib
DLL Kernel32.dll

另请参阅

文件管理功能

GetShortPathName