getGeoInfoW 函数 (winnls.h)

[GetGeoInfo 可用于“要求”部分中指定的操作系统。 它可能在后续版本中变更或不可用。 请改用 GetGeoInfoEx

]

检索有关指定地理位置的信息。

语法

int GetGeoInfoW(
  [in]            GEOID   Location,
  [in]            GEOTYPE GeoType,
  [out, optional] LPWSTR  lpGeoData,
  [in]            int     cchData,
  [in]            LANGID  LangId
);

参数

[in] Location

要获取其信息的地理位置的标识符。 有关详细信息,请参阅 地理位置表。 可以通过调用 EnumSystemGeoID 来获取可用值。

[in] GeoType

要检索的信息的类型。 可能的值由 SYSGEOTYPE 枚举定义。 如果 GeoType 的值GEO_LCID,该函数将检索区域设置标识符。 如果 GeoType 的值GEO_RFC1766,该函数将检索符合 RFC 4646 (Windows Vista) 的字符串名称。 有关详细信息,请参见“备注”部分。

Windowsxp:GeoType 设置为 GEO_LCID 时,检索到的字符串是一个 8 位数的十六进制值。

Windows Me: 如果 GeoType 设置为 GEO_LCID,则检索到的字符串为十进制值。

[out, optional] lpGeoData

指向此函数检索信息的缓冲区的指针。

[in] cchData

lpGeoData 指示的缓冲区的大小。 大小是函数 ANSI 版本的字节数,或 Unicode 版本的字数。 如果函数要返回所需的缓冲区大小,则应用程序可以将此参数设置为 0。

[in] LangId

语言的标识符,与 Location 值一起使用。 应用程序可以将此参数设置为 0,并为 GeoType 指定GEO_RFC1766或GEO_LCID。 此设置使函数通过调用 GetUserDefaultLangID 来检索语言标识符。

注意 如果 GeoType 具有除 GEO_RFC1766 或 GEO_LCID 以外的任何值,则应用程序必须将此参数设置为 0。
 

返回值

返回输出缓冲区中检索的地理位置信息 (Unicode) ANSI) 或单词 (字节数。 如果 cchData 设置为 0,则函数将返回缓冲区所需的大小。

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

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

注解

如果应用程序为 GeoType 指定GEO_RFC1766,则应为 LangId 指定一个适合指定地理位置标识符的语言标识符。 相应的语言要么是非特定区域设置的语言,要么是具有与指定标识符对应的区域设置的语言。 生成的字符串符合 RFC 4646 (Windows Vista) ,构成 区域设置名称

例如,如果将 Location 指定为 美国 的0xF4,将 GeoType 指定为 GEO_RFC1766,将 LangId 指定为非特定区域设置英语的0x09或英语 (美国) 0x409,则函数在成功返回时检索“en-US”。 事实上, 函数会忽略语言中特定于区域设置的部分。 因此,如果应用程序将 LangId 指定为英语 (英国) 0x809,则函数还会将“en-US”写入 lpGeoData

请看另一个示例。 如果将 Location 指定为 美国 的0xF4,将 GeoType 指定为 GEO_RFC1766,将 LangId 指定为中文的 0x04,则函数在成功返回时检索“zh-US”。 这不是受支持的区域设置的名称。

如果应用程序为 GeoType 指定GEO_LCID,则函数会将语言标识符视为 LCID) (区域设置标识符。 如果区域设置标识符以某种方式与提供的地理标识符相关联,则它会尝试返回该标识符。

注意

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

要求

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

另请参阅

EnumSystemGeoID

GetGeoInfoEx

国家/地区语言支持

国家/地区语言支持函数

SYSGEOTYPE