Функция GetGeoInfoA (winnls.h)

[GetGeoInfo доступен для использования в операционных системах, указанных в разделе Требования. В последующих версиях он может быть изменен или недоступен. Вместо этого используйте GetGeoInfoEx.

]

Извлекает сведения об указанном географическом расположении.

Синтаксис

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

Параметры

[in] Location

Идентификатор географического расположения, для которого требуется получить сведения. Дополнительные сведения см. в разделе Таблица географических расположений. Доступные значения можно получить, вызвав EnumSystemGeoID.

[in] GeoType

Тип извлекаемой информации. Возможные значения определяются перечислением SYSGEOTYPE . Если значение GeoType равно GEO_LCID, функция получает идентификатор языкового стандарта. Если значение GeoType равно GEO_RFC1766, функция получает строковое имя, соответствующее стандарту RFC 4646 (Windows Vista). Дополнительные сведения см. в разделе «Примечания».

Windows XP: Если geoType имеет значение GEO_LCID, полученная строка представляет собой шестнадцатеричное значение из 8 цифр.

Windows Me: Если для GeoType задано значение GEO_LCID, полученная строка является десятичным значением.

[out, optional] lpGeoData

Указатель на буфер, в котором эта функция извлекает сведения.

[in] cchData

Размер буфера, указанный lpGeoData. Размер — это количество байтов для версии ANSI функции или количество слов для версии Юникода. Приложение может задать для этого параметра значение 0, если функция возвращает требуемый размер буфера.

[in] LangId

Идентификатор языка, используемый со значением Location. Приложение может задать для этого параметра значение 0, а GEO_RFC1766 или GEO_LCID указано в параметре GeoType. Этот параметр приводит к тому, что функция получает идентификатор языка путем вызова GetUserDefaultLangID.

Примечание Приложение должно задать для этого параметра значение 0, если geoType имеет значение, отличное от GEO_RFC1766 или GEO_LCID.
 

Возвращаемое значение

Возвращает количество байтов (ANSI) или слов (Юникод) сведений о географическом расположении, полученных в выходном буфере. Если параметр cchData имеет значение 0, функция возвращает необходимый размер буфера.

Функция возвращает значение 0, если не удалось. Чтобы получить расширенные сведения об ошибке, приложение может вызвать Метод GetLastError, который может возвращать один из следующих кодов ошибок:

  • ERROR_INSUFFICIENT_BUFFER. Указанный размер буфера был недостаточно велик или неправильно задано значение NULL.
  • ERROR_INVALID_PARAMETER. Любое из значений параметров было недопустимым.

Комментарии

Если приложение указывает GEO_RFC1766 для GeoType, оно должно указать идентификатор языка для 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" при успешном возвращении. Это не имя поддерживаемого языкового стандарта.

Если приложение указывает GEO_LCID для GeoType, функция обрабатывает идентификатор языка как идентификатор языкового стандарта (LCID). Он пытается вернуть идентификатор языкового стандарта, если он каким-то образом связан с предоставленным географическим идентификатором.

Примечание

Заголовок winnls.h определяет GetGeoInfo в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header winnls.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

EnumSystemGeoID

GetGeoInfoEx

Поддержка национальных языков

Функции поддержки национальных языков

SYSGEOTYPE