From: Vijay Kiran Kamuju Subject: [PATCH v4 1/2] ntdll: add stub implementation for ProcessQuotaLimits Message-Id: Date: Sat, 21 Mar 2020 07:33:04 +0100 based on patch from Qian Hong Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=44812 Signed-off-by: Vijay Kiran Kamuju From 97728ce8ecaeb1407034aa3c0d9f0c3e3f6b3454 Mon Sep 17 00:00:00 2001 From: Vijay Kiran Kamuju Date: Sat, 15 Feb 2020 03:29:16 +0100 Subject: [PATCH v4 1/2] ntdll: add stub implementation for ProcessQuotaLimits based on patch from Qian Hong Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=44812 Signed-off-by: Vijay Kiran Kamuju --- dlls/ntdll/process.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c index 78e112bd3a..f54f4b0138 100644 --- a/dlls/ntdll/process.c +++ b/dlls/ntdll/process.c @@ -219,7 +219,6 @@ NTSTATUS WINAPI NtQueryInformationProcess( switch (ProcessInformationClass) { - UNIMPLEMENTED_INFO_CLASS(ProcessQuotaLimits); UNIMPLEMENTED_INFO_CLASS(ProcessBasePriority); UNIMPLEMENTED_INFO_CLASS(ProcessRaisePriority); UNIMPLEMENTED_INFO_CLASS(ProcessExceptionPort); @@ -283,6 +282,45 @@ NTSTATUS WINAPI NtQueryInformationProcess( } } break; + case ProcessQuotaLimits: + { + FIXME("ProcessQuotaLimits (%p,%p,0x%08x,%p) stub\n", + ProcessHandle,ProcessInformation, + ProcessInformationLength,ReturnLength); + QUOTA_LIMITS qlimits; + + if (ProcessInformationLength >= sizeof(QUOTA_LIMITS)) + { + if (!ProcessInformation) + ret = STATUS_ACCESS_VIOLATION; + else if (!ProcessHandle) + ret = STATUS_INVALID_HANDLE; + else + { + /* FIXME : SetProcessWorkingSetSize can also set the quota values + Quota Limits should be stored inside process */ + qlimits.PagedPoolLimit = (SIZE_T)-1; + qlimits.NonPagedPoolLimit = (SIZE_T)-1; + /* Default minimum working set size is 204800 bytes (50 Pages) */ + qlimits.MinimumWorkingSetSize = 204800; + /* Default maximum working set size is 1413120 bytes (345 Pages) */ + qlimits.MaximumWorkingSetSize = 1413120; + qlimits.PagefileLimit = (SIZE_T)-1; + qlimits.TimeLimit.QuadPart = -1; + memcpy(ProcessInformation, &qlimits, sizeof(QUOTA_LIMITS)); + len = sizeof(qlimits); + } + + if (ProcessInformationLength > sizeof(QUOTA_LIMITS)) + ret = STATUS_INFO_LENGTH_MISMATCH; + } + else + { + len = sizeof(qlimits); + ret = STATUS_INFO_LENGTH_MISMATCH; + } + } + break; case ProcessIoCounters: { IO_COUNTERS pii; -- 2.25.2