DownlevelGetLocaleScripts 函数

提供指定区域设置的脚本列表。

注意

此函数仅供 Windows Vista 之前的操作系统上运行的应用程序使用。 其使用需要下载程序包。 仅在 Windows Vista 及更高版本上运行的应用程序应调用 LCType 设置为 LOCALE_SSCRIPTSGetLocaleInfo

 

语法

int DownlevelGetLocaleScripts(
  _In_  LPCWSTR lpLocaleName,
  _Out_ LPWSTR  lpScripts,
  _In_  int     cchScripts
);

参数

lpLocaleName [in]

指向以 null 结尾的区域设置名称的指针。

lpScripts [out]

指向缓冲区的指针,此函数使用 ISO 15924 中使用的 4 字符表示法检索表示脚本列表的以 null 结尾的字符串。 每个脚本名称由四个拉丁字符组成,名称按字母顺序检索。 其中每一个(包括最后一个)都后跟一个分号。

或者,如果 cchScripts 设置为 0,则此参数可以包含 NULL。 在这种情况下,该函数返回脚本缓冲区所需的大小。

cchScripts [in]

lpScripts 指示的脚本缓冲区的大小(以字符为单位)。

或者,应用程序可以将此参数设置为 0。 在这种情况下,该函数在 lpScripts 中检索 NULL,并返回脚本缓冲区所需的大小。

返回值

返回脚本缓冲区中检索的字符数,包括终止 null 字符。 如果函数成功且 cchScripts 的值为 0,则返回值是脚本缓冲区的终止 null 字符(包括终止 null 字符)所需的大小。

如果此函数不成功,则返回 0。 若要获取扩展错误信息,可以让应用程序调用 GetLastError,它可能会返回以下错误代码之一:

  • ERROR_BADDB。 函数无法访问数据。 这种情况一般不会发生,通常表示安装错误、磁盘问题或类似情况。
  • ERROR_INSUFFICIENT_BUFFER。 提供的缓冲区大小不够大,或者错误地设置为 NULL
  • ERROR_INVALID_PARAMETER。 任何参数值无效。

备注

此函数在缓解与国际化域名 (IDN) 相关的安全问题的策略中非常有用。

下面是此函数的输入和输出的一些示例,假设有缓冲区大小合适:

区域设置 lpLocaleName lpScripts
英语(美国) en-US Latn;
印地语(印度) hi-IN Deva;
日语(日本) ja-JP Hani;Hira;Kana;

 

列表不含拉丁语脚本,除非是用于区域设置的写入系统的重要组成部分。 但拉丁字符通常用于非本地语言环境,如外国企业名称。 在上述印度印地语示例中,检索的唯一脚本是“Deva”(对于 Devanagari),尽管拉丁字符也可以出现在印地语文字中。 DownlevelVerifyScripts 函数有一个特殊标志来处理这种情况。

所需的标题文件和 DLL 是可从 archive.org 下载的“Microsoft 国际化域名 (IDN) 缓解 API”的一部分。

要求

要求
最低受支持的客户端
Windows XP [仅限桌面应用]
最低受支持的服务器
Windows Server 2003 [仅限桌面应用]
可再发行组件
Windows XP(SP2 或更高版本)、Windows Server 2003(SP1 或更高版本)或 Windows Vista 上的 Microsoft 国际化域名 (IDN) 缓解 API
Header
Idndl.h
DLL
Idndl.dll

另请参阅

区域语言支持

区域语言支持函数

处理国际化域名 (IDN)

DownlevelGetStringScripts

DownlevelVerifyScripts

GetLocaleInfo