SYNCHRONIZE | \
31)
+//
+// Job Limit Flags
+//
+#define JOB_OBJECT_LIMIT_WORKINGSET 0x1
+#define JOB_OBJECT_LIMIT_PROCESS_TIME 0x2
+#define JOB_OBJECT_LIMIT_JOB_TIME 0x4
+#define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 0x8
+#define JOB_OBJECT_LIMIT_AFFINITY 0x10
+#define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x20
+#define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x40
+#define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x80
+#define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x100
+#define JOB_OBJECT_LIMIT_JOB_MEMORY 0x200
+#define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x400
+#define JOB_OBJECT_LIMIT_BREAKAWAY_OK 0x800
+#define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x1000
+#define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x2000
+
+
//
// Cross Thread Flags
//
{
NT_TIB Tib;
PVOID EnvironmentPointer;
- CLIENT_ID Cid;
+ CLIENT_ID ClientId;
PVOID ActiveRpcHandle;
PVOID ThreadLocalStoragePointer;
struct _PEB *ProcessEnvironmentBlock;
typedef struct _ETHREAD
{
KTHREAD Tcb;
- PVOID Padding;
LARGE_INTEGER CreateTime;
union
{
#endif
PPS_IMPERSONATION_INFORMATION ImpersonationInfo;
LIST_ENTRY IrpList;
- ULONG TopLevelIrp;
+ ULONG_PTR TopLevelIrp;
PDEVICE_OBJECT DeviceToVerify;
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
PPSP_RATE_APC RateControlApc;
KSEMAPHORE AlpcWaitSemaphore;
ULONG CacheManagerCount;
#endif
-} ETHREAD, *PETHREAD;
+} ETHREAD;
//
// Executive Process (EPROCESS)
UCHAR PriorityClass;
MM_AVL_TABLE VadRoot;
ULONG Cookie;
-} EPROCESS, *PEPROCESS;
+} EPROCESS;
//
// Job Token Filter Data
ULONG PeakProcessMemoryUsed;
ULONG PeakJobMemoryUsed;
ULONG CurrentJobMemoryUsed;
-#if (NTDDI_VERSION == NTDDI_WINXP)
+#if (NTDDI_VERSION >= NTDDI_WINXP) && (NTDDI_VERSION < NTDDI_WS03)
FAST_MUTEX MemoryLimitsLock;
-#elif (NTDDI_VERSION == NTDDI_WS03)
+#elif (NTDDI_VERSION >= NTDDI_WS03) && (NTDDI_VERSION < NTDDI_LONGHORN)
KGUARDED_MUTEX MemoryLimitsLock;
#elif (NTDDI_VERSION >= NTDDI_LONGHORN)
EX_PUSH_LOCK MemoryLimitsLock;