Module: wine Branch: master Commit: 9984ac8a12e0d78ca9cfa33db7340ff1a8e60f71 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9984ac8a12e0d78ca9cfa33db7...
Author: EA Durbin ead1234@hotmail.com Date: Tue Oct 16 21:06:46 2007 -0500
kernel32: Partially implement GetUserGeoID().
---
dlls/kernel32/locale.c | 32 ++++++++++++++++++++++++++++++-- 1 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c index 6624f81..1ecda49 100644 --- a/dlls/kernel32/locale.c +++ b/dlls/kernel32/locale.c @@ -3500,8 +3500,36 @@ BOOL WINAPI InvalidateNLSCache(void) */ GEOID WINAPI GetUserGeoID( GEOCLASS GeoClass ) { - FIXME("%d\n",GeoClass); - return GEOID_NOT_AVAILABLE; + GEOID ret = GEOID_NOT_AVAILABLE; + static const WCHAR geoW[] = {'G','e','o',0}; + static const WCHAR nationW[] = {'N','a','t','i','o','n',0}; + WCHAR bufferW[40], *end; + DWORD count; + HANDLE hkey, hSubkey = 0; + UNICODE_STRING keyW; + const KEY_VALUE_PARTIAL_INFORMATION *info = (KEY_VALUE_PARTIAL_INFORMATION *)bufferW; + RtlInitUnicodeString( &keyW, nationW ); + count = sizeof(bufferW); + + if(!(hkey = create_registry_key())) return ret; + + switch( GeoClass ){ + case GEOCLASS_NATION: + if ((hSubkey = NLS_RegOpenKey(hkey, geoW))) + { + if((NtQueryValueKey(hSubkey, &keyW, KeyValuePartialInformation, + (LPBYTE)bufferW, count, &count) == STATUS_SUCCESS ) && info->DataLength) + ret = strtolW((LPCWSTR)info->Data, &end, 10); + } + break; + case GEOCLASS_REGION: + FIXME("GEOCLASS_REGION not handled yet\n"); + break; + } + + NtClose(hkey); + if (hSubkey) NtClose(hSubkey); + return ret; }
/******************************************************************************