From: Vijay Kiran Kamuju Subject: [PATCH v4 2/2] ntdll/tests: Add tests for ProcessQuotaLimits class Message-Id: Date: Sat, 21 Mar 2020 07:33:51 +0100 Signed-off-by: Vijay Kiran Kamuju From b5bda85b5d7dbe2c1678abfd6201079447d3afab Mon Sep 17 00:00:00 2001 From: Vijay Kiran Kamuju Date: Sat, 15 Feb 2020 10:03:51 +0100 Subject: [PATCH v4 2/2] ntdll/tests: Add tests for ProcessQuotaLimits class Signed-off-by: Vijay Kiran Kamuju --- dlls/ntdll/tests/info.c | 53 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c index 8dc8bad645..877081c4ac 100644 --- a/dlls/ntdll/tests/info.c +++ b/dlls/ntdll/tests/info.c @@ -1308,6 +1308,55 @@ static void test_query_process_basic(void) ok( pbi.UniqueProcessId > 0, "Expected a ProcessID > 0, got 0\n"); } +static void test_query_process_quotalimits(void) +{ + NTSTATUS status; + QUOTA_LIMITS quotalimits; + ULONG ReturnLength; + HANDLE process; + + status = pNtQueryInformationProcess(NULL, ProcessQuotaLimits, NULL, sizeof(quotalimits), NULL); + ok( status == STATUS_ACCESS_VIOLATION || status == STATUS_INVALID_HANDLE, "Got %08x\n", status); + + status = pNtQueryInformationProcess(NULL, ProcessQuotaLimits, "alimits, sizeof(quotalimits), NULL); + ok( status == STATUS_INVALID_HANDLE, "Got %08x\n", status); + + process = GetCurrentProcess(); + status = pNtQueryInformationProcess( process, ProcessQuotaLimits, "alimits, 2, &ReturnLength); + ok( status == STATUS_INFO_LENGTH_MISMATCH, "Got %08x\n", status); + + memset("alimits, 0, sizeof(quotalimits)); + status = pNtQueryInformationProcess( process, ProcessQuotaLimits, "alimits, sizeof(quotalimits), &ReturnLength); + ok( status == STATUS_SUCCESS, "Got %08x\n", status); + ok( sizeof(quotalimits) == ReturnLength, "Inconsistent length %d\n", ReturnLength); + ok( quotalimits.MinimumWorkingSetSize == 204800,"Got MinumumWorkingSetSize = %lu\n",quotalimits.MinimumWorkingSetSize); + ok( quotalimits.MaximumWorkingSetSize == 1413120,"Got MaximumWorkingSetSize = %lu\n",quotalimits.MaximumWorkingSetSize); + ok( quotalimits.PagefileLimit == ~0,"Got PagefileLimit = %lu\n",quotalimits.PagefileLimit); + ok( quotalimits.TimeLimit.QuadPart == ~0,"Got TimeLimit = %s\n",wine_dbgstr_longlong(quotalimits.TimeLimit.QuadPart)); + + if (winetest_debug > 1) + { + trace("Quota Limits:\n"); + trace("PagedPoolLimit : %lu\n", quotalimits.PagedPoolLimit); + trace("NonPagedPoolLimit : %lu\n", quotalimits.NonPagedPoolLimit); + } + + memset("alimits, 0, sizeof(quotalimits)); + status = pNtQueryInformationProcess( process, ProcessQuotaLimits, "alimits, sizeof(quotalimits)*2, &ReturnLength); + ok( status == STATUS_INFO_LENGTH_MISMATCH, "Got %08x\n", status); + ok( sizeof(quotalimits) == ReturnLength, "Inconsistent length %d\n", ReturnLength); + + memset("alimits, 0, sizeof(quotalimits)); + status = pNtQueryInformationProcess( process, ProcessQuotaLimits, "alimits, sizeof(quotalimits)-1, &ReturnLength); + ok( status == STATUS_INFO_LENGTH_MISMATCH, "Got %08x\n", status); + ok( sizeof(quotalimits) == ReturnLength, "Inconsistent length %d\n", ReturnLength); + + memset("alimits, 0, sizeof(quotalimits)); + status = pNtQueryInformationProcess( process, ProcessQuotaLimits, "alimits, sizeof(quotalimits)+1, &ReturnLength); + ok( status == STATUS_INFO_LENGTH_MISMATCH, "Got %08x\n", status); + ok( sizeof(quotalimits) == ReturnLength, "Inconsistent length %d\n", ReturnLength); +} + static void dump_vm_counters(const char *header, const VM_COUNTERS *pvi) { trace("%s:\n", header); @@ -2590,6 +2639,10 @@ START_TEST(info) trace("Starting test_query_process_basic()\n"); test_query_process_basic(); + /* 0x1 ProcessQuotaLimits */ + trace("Starting test_query_process_quotalimits()\n"); + test_query_process_quotalimits(); + /* 0x2 ProcessIoCounters */ trace("Starting test_query_process_io()\n"); test_query_process_io(); -- 2.25.2