Module: wine Branch: master Commit: 731d09fa9dd7b2efbf8b6a72ddd6dbe68402592f URL: http://source.winehq.org/git/wine.git/?a=commit;h=731d09fa9dd7b2efbf8b6a72dd...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Nov 12 14:26:25 2015 +0100
server: Store all 32 bits of value type.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/tests/reg.c | 14 ++++++++++++-- server/registry.c | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/tests/reg.c b/dlls/ntdll/tests/reg.c index dfec007..96f190b 100644 --- a/dlls/ntdll/tests/reg.c +++ b/dlls/ntdll/tests/reg.c @@ -530,14 +530,14 @@ static void test_NtQueryValueKey(void) OBJECT_ATTRIBUTES attr; UNICODE_STRING ValName; KEY_VALUE_BASIC_INFORMATION *basic_info; - KEY_VALUE_PARTIAL_INFORMATION *partial_info; + KEY_VALUE_PARTIAL_INFORMATION *partial_info, pi; KEY_VALUE_FULL_INFORMATION *full_info; DWORD len, expected;
pRtlCreateUnicodeStringFromAsciiz(&ValName, "deletetest");
InitializeObjectAttributes(&attr, &winetestpath, 0, 0, 0); - status = pNtOpenKey(&key, KEY_READ, &attr); + status = pNtOpenKey(&key, KEY_READ|KEY_SET_VALUE, &attr); ok(status == STATUS_SUCCESS, "NtOpenKey Failed: 0x%08x\n", status);
len = FIELD_OFFSET(KEY_VALUE_BASIC_INFORMATION, Name[0]); @@ -632,8 +632,18 @@ static void test_NtQueryValueKey(void) ok(len == expected, "NtQueryValueKey wrong len %u\n", len);
HeapFree(GetProcessHeap(), 0, partial_info); + pRtlFreeUnicodeString(&ValName);
+ pRtlCreateUnicodeStringFromAsciiz(&ValName, "custtest"); + status = pNtSetValueKey(key, &ValName, 0, 0xff00ff00, NULL, 0); + ok(status == STATUS_SUCCESS, "NtSetValueKey Failed: 0x%08x\n", status); + + status = pNtQueryValueKey(key, &ValName, KeyValuePartialInformation, &pi, sizeof(pi), &len); + ok(status == STATUS_SUCCESS, "NtQueryValueKey should have returned STATUS_BUFFER_TOO_SMALL instead of 0x%08x\n", status); + ok(pi.Type == 0xff00ff00, "Type=%x\n", pi.Type); + ok(pi.DataLength == 0, "DataLength=%u\n", pi.DataLength); pRtlFreeUnicodeString(&ValName); + pNtClose(key); }
diff --git a/server/registry.c b/server/registry.c index dad86e7..c95e103 100644 --- a/server/registry.c +++ b/server/registry.c @@ -93,7 +93,7 @@ struct key_value { WCHAR *name; /* value name */ unsigned short namelen; /* length of value name */ - unsigned short type; /* value type */ + unsigned int type; /* value type */ data_size_t len; /* value data length in bytes */ void *data; /* pointer to value data */ };