getNLSVersionEx 函数 (winnls.h)

检索由名称指定的区域设置的指定 NLS 功能的当前版本的相关信息。

注意 如果设计为仅在 Windows Vista 及更高版本上运行,则应用程序应优先调用 GetNLSVersion

 

语法

BOOL GetNLSVersionEx(
  [in]           NLS_FUNCTION       function,
  [in, optional] LPCWSTR            lpLocaleName,
  [in, out]      LPNLSVERSIONINFOEX lpVersionInformation
);

参数

[in] function

要查询的 NLS 功能。 此值必须COMPARE_STRING。 请参阅 SYSNLS_FUNCTION 枚举。

[in, optional] lpLocaleName

指向 区域设置名称或以下预定义值之一的指针。

[in, out] lpVersionInformation

指向 NLSVERSIONINFOEX 结构的指针。 应用程序必须将 dwNLSVersionInfoSize 成员初始化为 sizeof(NLSVERSIONINFOEX)

注意 在 Windows Vista 及更高版本中, 函数还可以在 NLSVERSIONINFO 结构中提供版本信息。
 

返回值

当且仅当应用程序在 lpVersionInformation 中提供了有效值时,才返回 TRUE,否则返回 FALSE。 若要获取扩展的错误信息,应用程序可以调用 GetLastError,这会返回以下错误代码之一:

  • ERROR_INSUFFICIENT_BUFFER。 提供的缓冲区大小不够大,或者错误地设置为 NULL
  • ERROR_INVALID_FLAGS。 为标志提供的值无效。
  • ERROR_INVALID_PARAMETER。 任何参数值都无效。

注解

此函数允许 Active Directory 等应用程序确定 NLS 更改是否影响用于特定索引表的区域设置。 如果没有,则无需重新为表编制索引。 有关详细信息,请参阅 在应用程序中处理排序。 具体而言,若要判断排序版本是否已更改,并且需要重新编制索引:

  1. 执行数据的原始索引编制时,使用 GetNLSVersionEx 检索 NLSVERSIONINFOEX 结构。
  2. 将以下属性与索引一起存储以标识版本:
    • NLSVERSIONINFOEX.dwNLSVersion。 这指定正在使用的排序表的版本。
    • NLSVERSIONINFOEX.dwEffectiveId。 这会指定排序的有效区域设置。 自定义区域设置将指向内置区域设置的排序。
    • NLSVERSIONINFOEX.guidCustomVersion。 这是一个 GUID,用于为具有它们的自定义区域设置指定特定的自定义排序。
  3. 使用索引时,请使用 GetNLSVersionEx 来发现数据的版本。
  4. 如果这三个属性中的任何一个已更改,你正在使用的排序数据可能会返回不同的结果,并且你拥有的任何索引都可能无法找到记录。
  5. 如果 知道 数据不包含无效的 Unicode 码位, (即,所有字符串都传递了对 IsNLSDefinedString) 的调用,那么如果 只有dwNLSVersion 的低字节 (上述次要版本) 更改,则可以将其视为相同。
博客文章 “如何判断排序规则版本是否已更改” 中对此进行了更详细的介绍 (http://blogs.msdn.com/shawnste/archive/2007/06/01/how-to-tell-if-the-collation-version-changed.aspx).

此函数支持 自定义区域设置。 如果 lpLocaleName 指定补充区域设置,则检索的数据是与该补充区域设置关联的排序顺序的正确数据。

从 Windows 8 开始:如果你的应用将语言标记从 Windows.Globalization 命名空间传递到此函数,它必须首先通过调用 ResolveLocaleName 来转换标记。

要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 winnls.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

GetNLSVersion

处理应用程序中的排序

如何判断排序规则版本是否已更改

NLSVERSIONINFO

NLSVERSIONINFOEX

国家/地区语言支持

国家/地区语言支持函数

SYSNLS_FUNCTION