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;
+            }
+        }
+        break;
     case ProcessIoCounters:
         {
             IO_COUNTERS pii;