Jacek Caban : server: Store all 32 bits of value type.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Nov 12 09:58:28 CST 2015


Module: wine
Branch: master
Commit: 731d09fa9dd7b2efbf8b6a72ddd6dbe68402592f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=731d09fa9dd7b2efbf8b6a72ddd6dbe68402592f

Author: Jacek Caban <jacek at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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 */
 };




More information about the wine-cvs mailing list