isNLSDefinedString 函数 (winnls.h)

确定字符串中的每个字符是否具有指定 NLS 功能的已定义结果。

语法

BOOL IsNLSDefinedString(
  [in] NLS_FUNCTION     Function,
  [in] DWORD            dwFlags,
  [in] LPNLSVERSIONINFO lpVersionInformation,
  [in] LPCWSTR          lpString,
  [in] INT              cchStr
);

参数

[in] Function

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

[in] dwFlags

定义函数的标志。 必须为 0。

[in] lpVersionInformation

指向包含版本信息的 NLSVERSIONINFO 结构的指针。 通常,通过调用 GetNLSVersion 获取信息。 如果函数要使用当前版本,则应用程序会将此参数设置为 NULL

[in] lpString

指向要检查的 UTF-16 字符串的指针。

[in] cchStr

lpString 指示的字符串中的 UTF-16 字符数。 此计数可以包含终止 null 字符。 如果字符计数中包含终止 null 字符,则不会影响检查行为,因为始终定义终止 null 字符。

应用程序应提供 -1,以指示字符串以 null 结尾。 在这种情况下,函数本身计算字符串长度。

返回值

如果成功,则返回 TRUE (仅当输入字符串有效时),否则返回 FALSE 。 若要获取扩展的错误信息,应用程序可以调用 GetLastError,这会返回以下错误代码之一:

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

注解

此函数区分已定义字符串和未定义的字符串,以便 Active Directory 等应用程序可以拒绝具有未定义码位的字符串。 使用 函数可以最大程度地减少应用程序重新为其数据库编制索引的必要性。 有关详细信息,请参阅 在应用程序中处理排序

例如,如果将 Function 设置为 COMPARE_STRING, 则 IsNLSDefinedString 将检查未定义的码位、表示未定义的 Unicode 字符的 代理项对 或格式不正确的代理项对。 如果函数对特定字符串返回 TRUE ,则只要相应的 NLS 版本不更改, 则由 CompareStringLCMapString 检索的结果(LCMAP_SORTKEY集)保证相同。

要求

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

另请参阅

CompareString

GetNLSVersion

LCMapString

NLSVERSIONINFO

国家/地区语言支持

国家/地区语言支持函数

SYSNLS_FUNCTION