Alistair Leslie-Hughes : kernel32/tests: Tests for ProcessCookie in NtQueryInformationProcess.
Alexandre Julliard
julliard at winehq.org
Mon Sep 17 15:02:25 CDT 2018
Module: wine
Branch: master
Commit: 0a7293a8e3af1c596847a13bf4ee9a7e468e31b0
URL: https://source.winehq.org/git/wine.git/?a=commit;h=0a7293a8e3af1c596847a13bf4ee9a7e468e31b0
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Sun Sep 16 23:24:27 2018 +0000
kernel32/tests: Tests for ProcessCookie in NtQueryInformationProcess.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/tests/process.c | 51 ++++++++++++++++++++++++++++---------------
1 file changed, 34 insertions(+), 17 deletions(-)
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index 0eb113b..9f99720 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -3461,7 +3461,7 @@ static void test_session_info(void)
trace("active_session = %x\n", active_session);
}
-static void test_process_info(void)
+static void test_process_info(HANDLE hproc)
{
char buf[4096];
static const ULONG info_size[] =
@@ -3502,7 +3502,7 @@ static void test_process_info(void)
sizeof(ULONG) /* ProcessIoPriority */,
sizeof(ULONG) /* ProcessExecuteFlags */,
0 /* FIXME: sizeof(?) ProcessTlsInformation */,
- 0 /* FIXME: sizeof(?) ProcessCookie */,
+ sizeof(ULONG) /* ProcessCookie */,
sizeof(SECTION_IMAGE_INFORMATION) /* ProcessImageInformation */,
0 /* FIXME: sizeof(PROCESS_CYCLE_TIME_INFORMATION) ProcessCycleTime */,
sizeof(ULONG) /* ProcessPagePriority */,
@@ -3541,8 +3541,8 @@ static void test_process_info(void)
sizeof(PROCESS_JOB_MEMORY_INFO) /* ProcessJobMemoryInformation */,
#endif
};
- HANDLE hproc;
ULONG i, status, ret_len, size;
+ BOOL is_current = hproc == GetCurrentProcess();
if (!pNtQueryInformationProcess)
{
@@ -3550,13 +3550,6 @@ static void test_process_info(void)
return;
}
- hproc = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, GetCurrentProcessId());
- if (!hproc)
- {
- win_skip("PROCESS_QUERY_LIMITED_INFORMATION is not supported on this platform\n");
- return;
- }
-
for (i = 0; i < MaxProcessInfoClass; i++)
{
size = info_size[i];
@@ -3598,22 +3591,36 @@ static void test_process_info(void)
ok(status == STATUS_ACCESS_DENIED || status == STATUS_PORT_NOT_SET,
"for info %u expected STATUS_ACCESS_DENIED, got %08x (ret_len %u)\n", i, status, ret_len);
break;
-
+ case ProcessCookie:
+ if (is_current)
+ ok(status == STATUS_SUCCESS || status == STATUS_INVALID_PARAMETER /* before win8 */,
+ "for info %u got %08x (ret_len %u)\n", i, status, ret_len);
+ else
+ ok(status == STATUS_INVALID_PARAMETER /* before win8 */ || status == STATUS_ACCESS_DENIED,
+ "for info %u got %08x (ret_len %u)\n", i, status, ret_len);
+ break;
case ProcessExecuteFlags:
case ProcessDebugPort:
case ProcessDebugFlags:
- case ProcessCookie:
+ if (is_current)
+ ok(status == STATUS_SUCCESS || status == STATUS_INVALID_PARAMETER,
+ "for info %u, got %08x (ret_len %u)\n", i, status, ret_len);
+ else
todo_wine
- ok(status == STATUS_ACCESS_DENIED, "for info %u expected STATUS_ACCESS_DENIED, got %08x (ret_len %u)\n", i, status, ret_len);
+ ok(status == STATUS_ACCESS_DENIED,
+ "for info %u expected STATUS_ACCESS_DENIED, got %08x (ret_len %u)\n", i, status, ret_len);
break;
default:
- ok(status == STATUS_ACCESS_DENIED, "for info %u expected STATUS_ACCESS_DENIED, got %08x (ret_len %u)\n", i, status, ret_len);
+ if (is_current)
+ ok(status == STATUS_SUCCESS || status == STATUS_UNSUCCESSFUL || status == STATUS_INVALID_PARAMETER,
+ "for info %u, got %08x (ret_len %u)\n", i, status, ret_len);
+ else
+ ok(status == STATUS_ACCESS_DENIED,
+ "for info %u expected STATUS_ACCESS_DENIED, got %08x (ret_len %u)\n", i, status, ret_len);
break;
}
}
-
- CloseHandle(hproc);
}
static void test_GetLogicalProcessorInformationEx(void)
@@ -3780,6 +3787,7 @@ static void test_ProcThreadAttributeList(void)
START_TEST(process)
{
HANDLE job;
+ HANDLE hproc;
BOOL b = init();
ok(b, "Basic init of CreateProcess test\n");
if (!b) return;
@@ -3824,7 +3832,16 @@ START_TEST(process)
return;
}
- test_process_info();
+ hproc = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, GetCurrentProcessId());
+ if (hproc)
+ {
+ test_process_info(hproc);
+ CloseHandle(hproc);
+ }
+ else
+ win_skip("PROCESS_QUERY_LIMITED_INFORMATION is not supported on this platform\n");
+ test_process_info(GetCurrentProcess());
+
test_TerminateProcess();
test_Startup();
test_CommandLine();
More information about the wine-cvs
mailing list