wshom: Basic support for REG_SZ values in RegRead()
Nikolay Sivov
nsivov at codeweavers.com
Tue Dec 4 03:36:15 CST 2012
On 12/3/2012 15:42, Jacek Caban wrote:
> Hi Nikolay,
>
> On 12/03/12 12:29, Nikolay Sivov wrote:
>> + /* skip '\' after root name */
>> + if (name[len] == '\\') len++;
> It looks like if name[len] != '\\', then name should be considered invalid.
>
>> +
>> + val = strlenW(name);
>> + while (name[--val] != '\\' && val)
>> + ;
>> + keyname = SysAllocStringLen(&name[len], val-len);
> This won't work if name has no backslashes.
>
>
>> + /* skip leading '\' */
>> + val++;
>> +
>> + type = REG_NONE;
>> + datalen = 0;
>> + ret = RegGetValueW(root, keyname, &name[val], RRF_RT_ANY, &type, NULL, &datalen);
>> + if (ret == ERROR_SUCCESS)
>> + {
>> + if (type == REG_SZ)
>> + {
>> + V_VT(value) = VT_BSTR;
>> + V_BSTR(value) = SysAllocStringLen(NULL, datalen-1);
>> + ret = RegGetValueW(root, keyname, &name[val], RRF_RT_ANY, &type, V_BSTR(value), &datalen);
>> + }
>> + else
>> + FIXME("type %d not handled\n", type);
> This should return an error.
Thanks for comments. Next try I just sent should be better.
>
> Jacek
More information about the wine-devel
mailing list