ChangeSet ID: 21147 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/07 14:14:27
Modified files: dlls/shlwapi : shlwapi.spec reg.c
Log message: Uwe Bonnes bon@elektron.ikp.physik.tu-darmstadt.de Semi-stub implementation for SHRegGetValue(A|W).
Patch: http://cvs.winehq.org/patch.py?id=21147
Old revision New revision Changes Path 1.111 1.112 +2 -0 wine/dlls/shlwapi/shlwapi.spec 1.63 1.64 +62 -0 wine/dlls/shlwapi/reg.c
Index: wine/dlls/shlwapi/shlwapi.spec diff -u -p wine/dlls/shlwapi/shlwapi.spec:1.111 wine/dlls/shlwapi/shlwapi.spec:1.112 --- wine/dlls/shlwapi/shlwapi.spec:1.111 7 Nov 2005 20:14:27 -0000 +++ wine/dlls/shlwapi/shlwapi.spec 7 Nov 2005 20:14:27 -0000 @@ -726,6 +726,8 @@ @ stdcall SHRegGetPathW(long wstr wstr ptr long) @ stdcall SHRegGetUSValueA ( str str ptr ptr ptr long ptr long ) @ stdcall SHRegGetUSValueW ( wstr wstr ptr ptr ptr long ptr long ) +@ stdcall SHRegGetValueA ( long str str long ptr ptr ptr ) +@ stdcall SHRegGetValueW ( long wstr wstr long ptr ptr ptr ) @ stdcall SHRegOpenUSKeyA ( str long long long long ) @ stdcall SHRegOpenUSKeyW ( wstr long long long long ) @ stdcall SHRegQueryInfoUSKeyA ( long ptr ptr ptr ptr long ) Index: wine/dlls/shlwapi/reg.c diff -u -p wine/dlls/shlwapi/reg.c:1.63 wine/dlls/shlwapi/reg.c:1.64 --- wine/dlls/shlwapi/reg.c:1.63 7 Nov 2005 20:14:27 -0000 +++ wine/dlls/shlwapi/reg.c 7 Nov 2005 20:14:27 -0000 @@ -1140,6 +1140,68 @@ DWORD WINAPI SHGetValueA(HKEY hKey, LPCS }
/************************************************************************* + * SHRegGetValueA [SHLWAPI.@] + * + * Get a value from the registry. + * + * PARAMS + * hKey [I] Handle to registry key + * lpszSubKey [I] Name of sub key containing value to get + * lpszValue [I] Name of value to get + * srrf [I] Flags for restricting returned data + * pwType [O] Pointer to the values type + * pvData [O] Pointer to the values data + * pcbData [O] Pointer to the values size + * + * RETURNS + * Success: ERROR_SUCCESS. Output parameters contain the details read. + * Failure: An error code from RegOpenKeyExA() or SHQueryValueExA(). + */ +DWORD WINAPI SHRegGetValueA(HKEY hKey, LPCSTR lpszSubKey, LPCSTR lpszValue, DWORD srrfFlags, + LPDWORD pwType, LPVOID pvData, LPDWORD pcbData) +{ + DWORD dwRet = 0; + HKEY hSubKey = 0; + + TRACE("(hkey=%p,%s,%s,%p,%p,%p)\n", hKey, debugstr_a(lpszSubKey), + debugstr_a(lpszValue), pwType, pvData, pcbData); + FIXME("Semi-Stub: Find meaning and implement handling of SRFF Flags 0x%08lx\n", srrfFlags); + + dwRet = RegOpenKeyExA(hKey, lpszSubKey, 0, KEY_QUERY_VALUE, &hSubKey); + if (! dwRet) + { + /* SHQueryValueEx expands Environment strings */ + dwRet = SHQueryValueExA(hSubKey, lpszValue, 0, pwType, pvData, pcbData); + RegCloseKey(hSubKey); + } + return dwRet; +} + +/************************************************************************* + * SHReg GetRegValueW [SHLWAPI.@] + * + * See SHGetValueA. + */ +DWORD WINAPI SHRegGetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, DWORD srrfFlags, + LPDWORD pwType, LPVOID pvData, LPDWORD pcbData) +{ + DWORD dwRet = 0; + HKEY hSubKey = 0; + + TRACE("(hkey=%p,%s,%s,0x%08lx, %p,%p,%p)\n", hKey, debugstr_w(lpszSubKey), + debugstr_w(lpszValue), srrfFlags,pwType, pvData, pcbData); + FIXME("Semi-Stub: Find meaning and implement handling of SRFF Flags 0x%08lx\n", srrfFlags); + + dwRet = RegOpenKeyExW(hKey, lpszSubKey, 0, KEY_QUERY_VALUE, &hSubKey); + if (! dwRet) + { + dwRet = SHQueryValueExW(hSubKey, lpszValue, 0, pwType, pvData, pcbData); + RegCloseKey(hSubKey); + } + return dwRet; +} + +/************************************************************************* * SHGetValueW [SHLWAPI.@] * * See SHGetValueA.