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)
群集共享卷文件系统 (CSV)
弹性文件系统 (ReFS)
 

SMB 3.0 不支持具有连续可用性功能的共享上的短名称。 不建议在 CsvF 上使用短名称。

注意

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

要求

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

另请参阅

文件管理函数

GetShortPathName