Akihiro Sagawa : ntdll/tests: Add KeyNameInformation tests.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Sep 29 13:35:41 CDT 2014
Module: wine
Branch: master
Commit: e47ff906597bf38dbc439da8e4d48b59c2334655
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e47ff906597bf38dbc439da8e4d48b59c2334655
Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date: Tue Sep 30 00:13:50 2014 +0900
ntdll/tests: Add KeyNameInformation tests.
---
dlls/ntdll/tests/reg.c | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/dlls/ntdll/tests/reg.c b/dlls/ntdll/tests/reg.c
index db608af..22048f9 100644
--- a/dlls/ntdll/tests/reg.c
+++ b/dlls/ntdll/tests/reg.c
@@ -129,11 +129,13 @@ static NTSTATUS (WINAPI * pNtDeleteKey)(HANDLE);
static NTSTATUS (WINAPI * pNtCreateKey)( PHANDLE retkey, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr,
ULONG TitleIndex, const UNICODE_STRING *class, ULONG options,
PULONG dispos );
+static NTSTATUS (WINAPI * pNtQueryKey)(HANDLE,KEY_INFORMATION_CLASS,PVOID,ULONG,PULONG);
static NTSTATUS (WINAPI * pNtQueryValueKey)(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
static NTSTATUS (WINAPI * pNtSetValueKey)(HANDLE, const PUNICODE_STRING, ULONG,
ULONG, const void*, ULONG );
static NTSTATUS (WINAPI * pNtQueryInformationProcess)(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
static NTSTATUS (WINAPI * pRtlFormatCurrentUserKeyPath)(PUNICODE_STRING);
+static LONG (WINAPI * pRtlCompareUnicodeString)(const PUNICODE_STRING,const PUNICODE_STRING,BOOLEAN);
static BOOLEAN (WINAPI * pRtlCreateUnicodeString)(PUNICODE_STRING, LPCWSTR);
static LPVOID (WINAPI * pRtlReAllocateHeap)(IN PVOID, IN ULONG, IN PVOID, IN ULONG);
static NTSTATUS (WINAPI * pRtlAppendUnicodeToString)(PUNICODE_STRING, PCWSTR);
@@ -174,11 +176,13 @@ static BOOL InitFunctionPtrs(void)
NTDLL_GET_PROC(NtCreateKey)
NTDLL_GET_PROC(NtFlushKey)
NTDLL_GET_PROC(NtDeleteKey)
+ NTDLL_GET_PROC(NtQueryKey)
NTDLL_GET_PROC(NtQueryValueKey)
NTDLL_GET_PROC(NtQueryInformationProcess)
NTDLL_GET_PROC(NtSetValueKey)
NTDLL_GET_PROC(NtOpenKey)
NTDLL_GET_PROC(RtlFormatCurrentUserKeyPath)
+ NTDLL_GET_PROC(RtlCompareUnicodeString)
NTDLL_GET_PROC(RtlReAllocateHeap)
NTDLL_GET_PROC(RtlAppendUnicodeToString)
NTDLL_GET_PROC(RtlUnicodeStringToAnsiString)
@@ -1276,6 +1280,42 @@ static void test_long_value_name(void)
pNtClose(key);
}
+static void test_NtQueryKey(void)
+{
+ HANDLE key;
+ NTSTATUS status;
+ OBJECT_ATTRIBUTES attr;
+ ULONG len;
+ KEY_NAME_INFORMATION *info = NULL;
+ UNICODE_STRING str;
+
+ InitializeObjectAttributes(&attr, &winetestpath, 0, 0, 0);
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ ok(status == STATUS_SUCCESS, "NtOpenKey Failed: 0x%08x\n", status);
+
+ status = pNtQueryKey(key, KeyNameInformation, NULL, 0, &len);
+ if (status == STATUS_INVALID_PARAMETER) {
+ win_skip("KeyNameInformation is not supported\n");
+ pNtClose(key);
+ return;
+ }
+ todo_wine ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryKey Failed: 0x%08x\n", status);
+
+ info = HeapAlloc(GetProcessHeap(), 0, len);
+ status = pNtQueryKey(key, KeyNameInformation, info, len, &len);
+ ok(status == STATUS_SUCCESS, "NtQueryKey Failed: 0x%08x\n", status);
+
+ str.Buffer = info->Name;
+ str.Length = info->NameLength;
+ todo_wine ok(pRtlCompareUnicodeString(&winetestpath, &str, TRUE) == 0,
+ "got %s, expected %s\n",
+ wine_dbgstr_wn(str.Buffer, str.Length/sizeof(WCHAR)),
+ wine_dbgstr_wn(winetestpath.Buffer, winetestpath.Length/sizeof(WCHAR)));
+
+ HeapFree(GetProcessHeap(), 0, info);
+ pNtClose(key);
+}
+
START_TEST(reg)
{
static const WCHAR winetest[] = {'\\','W','i','n','e','T','e','s','t',0};
@@ -1296,6 +1336,7 @@ START_TEST(reg)
test_RtlQueryRegistryValues();
test_RtlpNtQueryValueKey();
test_NtFlushKey();
+ test_NtQueryKey();
test_NtQueryValueKey();
test_long_value_name();
test_NtDeleteKey();
More information about the wine-cvs
mailing list