Поделиться через


Функция 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.

Рассмотрим другой пример. Если расположения указано как 0xF4 для США, GeoType указывается как GEO_RFC1766, а LangId указывается как 0x04 для китайского языка, функция получает "zh-US" при успешном возвращении. Это не имя поддерживаемого языкового стандарта.

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

Заметка

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2003 [классические приложения | Приложения UWP]
целевая платформа Виндоус
заголовка winnls.h (включая Windows.h)
библиотеки Kernel32.lib
DLL Kernel32.dll

См. также

EnumSystemGeoID

GetGeoInfoEx

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

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

SYSGEOTYPE