#include "ldrtypes.h"
#include "mmtypes.h"
#include "obtypes.h"
-#include "extypes.h"
+//#include "extypes.h"
#ifndef NTOS_MODE_USER
#include "setypes.h"
#endif
#define PROCESS_PRIORITY_CLASS_BELOW_NORMAL 5
#define PROCESS_PRIORITY_CLASS_ABOVE_NORMAL 6
+/* Process base priorities */
+#define PROCESS_PRIORITY_IDLE 3
+#define PROCESS_PRIORITY_NORMAL 8
+#define PROCESS_PRIORITY_NORMAL_FOREGROUND 9
+
/* Global Flags */
#define FLG_STOP_ON_EXCEPTION 0x00000001
#define FLG_SHOW_LDR_SNAPS 0x00000002
ProcessDebugObjectHandle,
ProcessDebugFlags,
ProcessHandleTracing,
+ ProcessIoPriority,
+ ProcessExecuteFlags,
+ ProcessTlsInformation,
+ ProcessCookie,
+ ProcessImageInformation,
+ ProcessCycleTime,
+ ProcessPagePriority,
+ ProcessInstrumentationCallback,
MaxProcessInfoClass
} PROCESSINFOCLASS;
ThreadIsIoPending,
ThreadHideFromDebugger,
ThreadBreakOnTermination,
+ ThreadSwitchLegacyState,
+ ThreadIsTerminated,
+ ThreadLastSystemCall,
+ ThreadIoPriority,
+ ThreadCycleTime,
+ ThreadPagePriority,
+ ThreadActualBasePriority,
MaxThreadInfoClass
} THREADINFOCLASS;
#endif
+#ifndef NTOS_MODE_USER
+typedef enum _JOBOBJECTINFOCLASS
+{
+ JobObjectBasicAccountingInformation = 1,
+ JobObjectBasicLimitInformation,
+ JobObjectBasicProcessIdList,
+ JobObjectBasicUIRestrictions,
+ JobObjectSecurityLimitInformation,
+ JobObjectEndOfJobTimeInformation,
+ JobObjectAssociateCompletionPortInformation,
+ JobObjectBasicAndIoAccountingInformation,
+ JobObjectExtendedLimitInformation,
+ JobObjectJobSetInformation,
+ MaxJobObjectInfoClass
+} JOBOBJECTINFOCLASS;
+#endif
+
/* FUNCTION TYPES ************************************************************/
typedef VOID (NTAPI *PPEBLOCKROUTINE)(PVOID);
/* TYPES *********************************************************************/
+struct _W32THREAD;
+struct _W32PROCESS;
+
+struct _ETHREAD;
+
#ifdef NTOS_MODE_USER
typedef struct _CLIENT_ID
{
} CLIENT_ID, *PCLIENT_ID;
#endif
-struct _W32THREAD;
-struct _W32PROCESS;
-
-struct _ETHREAD;
-
typedef struct _DESCRIPTOR_TABLE_ENTRY
{
ULONG Selector;
UCHAR BooleanSpare[3]; /* FB9h */
} TEB, *PTEB;
+#ifdef NTOS_MODE_USER
+typedef struct _PROCESS_BASIC_INFORMATION
+{
+ NTSTATUS ExitStatus;
+ PPEB PebBaseAddress;
+ ULONG_PTR AffinityMask;
+ KPRIORITY BasePriority;
+ ULONG_PTR UniqueProcessId;
+ ULONG_PTR InheritedFromUniqueProcessId;
+} PROCESS_BASIC_INFORMATION,*PPROCESS_BASIC_INFORMATION;
+
+typedef struct _PROCESS_ACCESS_TOKEN
+{
+ HANDLE Token;
+ HANDLE Thread;
+} PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN;
+
+typedef struct _PROCESS_DEVICEMAP_INFORMATION
+{
+ union
+ {
+ struct
+ {
+ HANDLE DirectoryHandle;
+ } Set;
+ struct
+ {
+ ULONG DriveMap;
+ UCHAR DriveType[32];
+ } Query;
+ };
+} PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION;
+
+typedef struct _KERNEL_USER_TIMES
+{
+ LARGE_INTEGER CreateTime;
+ LARGE_INTEGER ExitTime;
+ LARGE_INTEGER KernelTime;
+ LARGE_INTEGER UserTime;
+} KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
+
+typedef struct _PROCESS_SESSION_INFORMATION
+{
+ ULONG SessionId;
+} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;
+#endif
+
+typedef struct _PROCESS_PRIORITY_CLASS
+{
+ BOOLEAN Foreground;
+ UCHAR PriorityClass;
+} PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
+
+typedef struct _THREAD_BASIC_INFORMATION
+{
+ NTSTATUS ExitStatus;
+ PVOID TebBaseAddress;
+ CLIENT_ID ClientId;
+ KAFFINITY AffinityMask;
+ KPRIORITY Priority;
+ KPRIORITY BasePriority;
+} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
+
#ifndef NTOS_MODE_USER
/* FIXME: see note in mmtypes.h */
#ifdef _NTOSKRNL_
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
} PS_IMPERSONATION_INFORMATION, *PPS_IMPERSONATION_INFORMATION;
+typedef struct _TERMINATION_PORT
+{
+ struct _TERMINATION_PORT *Next;
+ PVOID Port;
+} TERMINATION_PORT, *PTERMINATION_PORT;
+
#include <pshpack4.h>
typedef struct _ETHREAD
{