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 更改是否影响用于特定索引表的区域设置。 如果没有,则无需重新为表编制索引。 有关详细信息,请参阅 在应用程序中处理排序。 具体而言,若要判断排序版本是否已更改,并且需要重新编制索引:
- 执行数据的原始索引编制时,使用 GetNLSVersionEx 检索 NLSVERSIONINFOEX 结构。
- 将以下属性与索引一起存储以标识版本:
- NLSVERSIONINFOEX.dwNLSVersion。 这指定正在使用的排序表的版本。
- NLSVERSIONINFOEX.dwEffectiveId。 这会指定排序的有效区域设置。 自定义区域设置将指向内置区域设置的排序。
- NLSVERSIONINFOEX.guidCustomVersion。 这是一个 GUID,用于为具有它们的自定义区域设置指定特定的自定义排序。
- 使用索引时,请使用 GetNLSVersionEx 来发现数据的版本。
- 如果这三个属性中的任何一个已更改,你正在使用的排序数据可能会返回不同的结果,并且你拥有的任何索引都可能无法找到记录。
- 如果 知道 数据不包含无效的 Unicode 码位, (即,所有字符串都传递了对 IsNLSDefinedString) 的调用,那么如果 只有dwNLSVersion 的低字节 (上述次要版本) 更改,则可以将其视为相同。
此函数支持 自定义区域设置。 如果 lpLocaleName 指定补充区域设置,则检索的数据是与该补充区域设置关联的排序顺序的正确数据。
从 Windows 8 开始:如果你的应用将语言标记从 Windows.Globalization 命名空间传递到此函数,它必须首先通过调用 ResolveLocaleName 来转换标记。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | winnls.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |