Module: wine Branch: master Commit: 0ce727e433db14225a6d9869b918500461ceb7b2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0ce727e433db14225a6d9869b9...
Author: Piotr Caban piotr@codeweavers.com Date: Tue Oct 12 16:37:08 2010 +0200
shlwapi: Added SKAllocValueW implementation.
---
dlls/shlwapi/ordinal.c | 37 +++++++++++++++++++++++++++++++++++++ dlls/shlwapi/shlwapi.spec | 2 +- 2 files changed, 38 insertions(+), 1 deletions(-)
diff --git a/dlls/shlwapi/ordinal.c b/dlls/shlwapi/ordinal.c index 63fffb2..8cd9eaa 100644 --- a/dlls/shlwapi/ordinal.c +++ b/dlls/shlwapi/ordinal.c @@ -4604,6 +4604,43 @@ HRESULT WINAPI IUnknown_OnFocusChangeIS(LPUNKNOWN lpUnknown, LPUNKNOWN pFocusObj }
/*********************************************************************** + * SKAllocValueW (SHLWAPI.519) + */ +HRESULT WINAPI SKAllocValueW(DWORD flags, LPCWSTR subkey, LPCWSTR value, DWORD *type, + LPVOID *data, DWORD *count) +{ + DWORD ret, size; + HKEY hkey; + + TRACE("(0x%x, %s, %s, %p, %p, %p)\n", flags, debugstr_w(subkey), + debugstr_w(value), type, data, count); + + hkey = SHGetShellKey(flags, subkey, FALSE); + if (!hkey) + return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND); + + ret = SHQueryValueExW(hkey, value, NULL, type, NULL, &size); + if (ret) { + RegCloseKey(hkey); + return HRESULT_FROM_WIN32(ret); + } + + size += 2; + *data = LocalAlloc(0, size); + if (!*data) { + RegCloseKey(hkey); + return E_OUTOFMEMORY; + } + + ret = SHQueryValueExW(hkey, value, NULL, type, *data, &size); + if (count) + *count = size; + + RegCloseKey(hkey); + return HRESULT_FROM_WIN32(ret); +} + +/*********************************************************************** * SKGetValueW (SHLWAPI.516) */ HRESULT WINAPI SKGetValueW(DWORD flags, LPCWSTR subkey, LPCWSTR value, DWORD *type, diff --git a/dlls/shlwapi/shlwapi.spec b/dlls/shlwapi/shlwapi.spec index 53dc250..dcd9989 100644 --- a/dlls/shlwapi/shlwapi.spec +++ b/dlls/shlwapi/shlwapi.spec @@ -512,7 +512,7 @@ 516 stdcall -noname SKGetValueW(long wstr wstr long long long) 517 stub -noname SKSetValueW 518 stub -noname SKDeleteValueW -519 stub -noname SKAllocValueW +519 stdcall -noname SKAllocValueW(long wstr wstr ptr ptr ptr) 520 stub -noname SHPropertyBag_ReadBSTR 521 stub -noname SHPropertyBag_ReadPOINTL 522 stub -noname SHPropertyBag_WritePOINTL