break;
- case ProcessQuotaLimits:
{
QUOTA_LIMITS qlimits;
if (ProcessInformationLength >= sizeof(QUOTA_LIMITS))
{
if (!ProcessInformation)
ret = STATUS_ACCESS_VIOLATION;
else if (!ProcessHandle)
ret = STATUS_INVALID_HANDLE;
else
{
Please remove this empty line.
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;
Please test against these hard-coded values. And add a FIXME here because they should be queried from process and SetProcessWorkingSetSize() can change them.
memcpy(ProcessInformation, &qlimits, sizeof(QUOTA_LIMITS));
Please use sizeof(qlimits) instead.
len = sizeof(QUOTA_LIMITS);
}
if (ProcessInformationLength > sizeof(QUOTA_LIMITS))
ret = STATUS_INFO_LENGTH_MISMATCH;
You should check ProcessInformationLength == sizeof(QUOTA_LIMITS) and remove this. You didn't correctly test the required size. You should test size of sizeof(QUOTA_LIMITS)-/+1
}
else
{
len = sizeof(QUOTA_LIMITS);
ret = STATUS_INFO_LENGTH_MISMATCH;
}
}
case ProcessIoCounters: { IO_COUNTERS pii;break;