37 Section =
Process->SectionObject;
62 IN ULONG ProcessInformationLength,
96 ProcessInformationLength,
123 switch (ProcessInformationClass)
222 Process->QuotaBlock->QuotaEntry[2].Limit;
238 if (ProcessInformationLength !=
sizeof(
IO_COUNTERS))
320 if (ProcessInformationLength !=
sizeof(
HANDLE))
358 if (ProcessInformationLength !=
sizeof(
ULONG))
383 *(
PULONG)ProcessInformation = HandleCount;
438 if ((ProcessInformationLength !=
sizeof(
VM_COUNTERS)) &&
473 Length = ProcessInformationLength;
489 if (ProcessInformationLength !=
sizeof(
ULONG))
512 DefaultHardErrorProcessing;
528 if (ProcessInformationLength !=
sizeof(
ULONG))
615 Length = ProcessInformationLength;
694 if (
Length <= ProcessInformationLength)
730 if (ProcessInformationLength !=
sizeof(
ULONG))
752 *(
PULONG)ProcessInformation =
Process->NoDebugInherit ? 0 : 1;
767 if (ProcessInformationLength !=
sizeof(
ULONG))
818 SystemTime.
u.LowPart ^ SystemTime.
u.HighPart;
877 if (ProcessInformationLength !=
sizeof(
HANDLE))
905 *(
PHANDLE)ProcessInformation = DebugPort;
916 DPRINT1(
"Handle tracing Not implemented: %lx\n", ProcessInformationClass);
922 if (ProcessInformationLength !=
sizeof(
ULONG))
950 if (ProcessInformationLength !=
sizeof(
ULONG))
987 if (ProcessInformationLength !=
sizeof(
ULONG_PTR))
1037 if (ProcessInformationLength !=
sizeof(
ULONG))
1059 *(
PULONG)ProcessInformation = ExecuteOptions;
1071 DPRINT1(
"VDM/16-bit not implemented: %lx\n", ProcessInformationClass);
1076 DPRINT1(
"WS Watch Not implemented: %lx\n", ProcessInformationClass);
1081 DPRINT1(
"Pool limits Not implemented: %lx\n", ProcessInformationClass);
1087 DPRINT1(
"Unsupported info class: %lx\n", ProcessInformationClass);
1115 IN ULONG ProcessInformationLength)
1127 PVOID ExceptionPort;
1131 UCHAR MemoryPriority = 0;
1133 ULONG DefaultHardErrorMode = 0;
1134 ULONG DebugFlags = 0, EnableFixup = 0, Boost = 0;
1135 ULONG NoExecute = 0, VdmPower = 0;
1147 ProcessInformationLength,
1175 switch (ProcessInformationClass)
1180 if (ProcessInformationLength !=
sizeof(
HANDLE))
1190 VdmPower = *(
PULONG)ProcessInformation;
1205 DPRINT1(
"Need TCB privilege\n");
1224 if (ProcessInformationLength !=
sizeof(
HANDLE))
1234 PortHandle = *(
PHANDLE)ProcessInformation;
1257 (
PVOID)&ExceptionPort,
1305 if (ProcessInformationLength !=
sizeof(
ULONG))
1314 DefaultHardErrorMode = *(
PULONG)ProcessInformation;
1325 Process->DefaultHardErrorProcessing = DefaultHardErrorMode;
1371 #if 0 // OLD AND DEPRECATED CODE!!!! 1472 DPRINT1(
"Privilege to change priority to realtime lacking\n");
1480 DPRINT1(
"Jobs not yet supported\n");
1528 if (ProcessInformationLength !=
sizeof(
KPRIORITY))
1537 BasePriority = *(
KPRIORITY*)ProcessInformation;
1549 if (BasePriority & 0x80000000)
1552 BasePriority &= ~0x80000000;
1567 if (BasePriority >
Process->Pcb.BasePriority)
1576 DPRINT1(
"Privilege to change priority from %lx to %lx lacking\n", BasePriority,
Process->Pcb.BasePriority);
1592 if (ProcessInformationLength !=
sizeof(
ULONG))
1601 Boost = *(
PULONG)ProcessInformation;
1620 for (Next =
Process->ThreadListHead.Flink;
1621 Next != &
Process->ThreadListHead;
1647 if (ProcessInformationLength !=
sizeof(
ULONG))
1656 Break = *(
PULONG)ProcessInformation;
1690 if (ProcessInformationLength !=
sizeof(
KAFFINITY))
1756 if (ProcessInformationLength !=
sizeof(
ULONG))
1765 DisableBoost = *(
PBOOLEAN)ProcessInformation;
1787 for (Next =
Process->ThreadListHead.Flink;
1788 Next != &
Process->ThreadListHead;
1814 if (ProcessInformationLength !=
sizeof(
ULONG))
1823 DebugFlags = *(
PULONG)ProcessInformation;
1834 if (DebugFlags & ~1)
1857 if (ProcessInformationLength !=
sizeof(
ULONG))
1866 EnableFixup = *(
PULONG)ProcessInformation;
1897 DPRINT1(
"Need TCB to set IOPL\n");
1914 if (ProcessInformationLength !=
sizeof(
ULONG))
1929 NoExecute = *(
PULONG)ProcessInformation;
1946 if (ProcessInformationLength !=
sizeof(
HANDLE))
1975 DPRINT1(
"VDM/16-bit Request not implemented: %lx\n", ProcessInformationClass);
1984 ProcessInformationLength,
1989 DPRINT1(
"WS watch not implemented\n");
1994 DPRINT1(
"Handle tracing not implemented\n");
2000 DPRINT1(
"Invalid Server 2003 Info Class: %lx\n", ProcessInformationClass);
2033 PVOID *ExpansionSlots;
2286 IdealProcessor = *(
PULONG_PTR)ThreadInformation;
2306 (
CCHAR)IdealProcessor);
2334 DisableBoost = *(
PULONG_PTR)ThreadInformation;
2390 Teb = ProcThread->
Tcb.
Teb;
2438 Break = *(
PULONG)ThreadInformation;
2512 ULONG ThreadTerminated;
2681 *(
PULONG)ThreadInformation = ((
Thread->ThreadsProcess->
2683 &
Thread->ThreadsProcess->
2765 Length =
sizeof(ThreadTerminated);
2777 *(
PULONG)ThreadInformation = ThreadTerminated ? 1 : 0;
#define ProbeForWriteUlong(Ptr)
struct _LARGE_INTEGER::@2220 u
#define KeQuerySystemTime(t)
struct _THREAD_BASIC_INFORMATION THREAD_BASIC_INFORMATION
#define MAXIMUM_PROCESSORS
BOOLEAN NTAPI KeSetDisableBoostThread(IN OUT PKTHREAD Thread, IN BOOLEAN Disable)
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
PFILE_OBJECT NTAPI MmGetFileObjectForSection(IN PVOID Section)
#define PspClearProcessFlag(Process, Flag)
#define STATUS_PRIVILEGE_NOT_HELD
#define PSF_BREAK_ON_TERMINATION_BIT
#define KeRaiseIrql(irql, oldIrql)
NTSYSAPI VOID NTAPI RtlCopyMemory(VOID UNALIGNED *Destination, CONST VOID UNALIGNED *Source, ULONG Length)
struct _KERNEL_USER_TIMES * PKERNEL_USER_TIMES
#define KeLowerIrql(oldIrql)
KAFFINITY NTAPI KeSetAffinityProcess(IN PKPROCESS Process, IN KAFFINITY Affinity)
#define STATUS_INFO_LENGTH_MISMATCH
#define PsGetCurrentThread()
BOOLEAN NTAPI KeSetAutoAlignmentProcess(IN PKPROCESS Process, IN BOOLEAN Enable)
#define PspClearCrossThreadFlag(Thread, Flag)
KAFFINITY NTAPI KeSetAffinityThread(IN PKTHREAD Thread, IN KAFFINITY Affinity)
#define STATUS_NOT_IMPLEMENTED
#define PROCESS_QUERY_INFORMATION
const LUID SeDebugPrivilege
#define SEM_NOALIGNMENTFAULTEXCEPT
NTKERNELAPI VOID FASTCALL ExReleaseRundownProtection(_Inout_ PEX_RUNDOWN_REF RunRef)
#define STATUS_INVALID_PARAMETER
BOOLEAN NTAPI KeSetDisableBoostProcess(IN PKPROCESS Process, IN BOOLEAN Disable)
#define TLS_EXPANSION_SLOTS
SIZE_T QuotaPagedPoolUsage
NTSTATUS NTAPI SeLocateProcessImageName(IN PEPROCESS Process, OUT PUNICODE_STRING *ProcessImageName)
#define THREAD_SET_INFORMATION
#define THREAD_BASE_PRIORITY_MAX
struct _PROCESS_ACCESS_TOKEN * PPROCESS_ACCESS_TOKEN
EX_RUNDOWN_REF RundownProtect
NTSTATUS NTAPI NtQueryInformationProcess(IN HANDLE ProcessHandle, IN PROCESSINFOCLASS ProcessInformationClass, OUT PVOID ProcessInformation, IN ULONG ProcessInformationLength, OUT PULONG ReturnLength OPTIONAL)
NTSTATUS NTAPI ObSetDeviceMap(IN PEPROCESS Process, IN HANDLE DirectoryHandle)
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID _Out_ PHANDLE Token
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
#define ExAcquireRundownProtection
VOID NTAPI Ke386SetIOPL(VOID)
static HANDLE DirectoryHandle
SIZE_T QuotaPeakPagedPoolUsage
#define InterlockedCompareExchange
NTSTATUS NTAPI ObQueryDeviceMapInformation(IN PEPROCESS Process, OUT PPROCESS_DEVICEMAP_INFORMATION DeviceMapInfo, IN ULONG Flags)
BOOLEAN NTAPI SeSinglePrivilegeCheck(IN LUID PrivilegeValue, IN KPROCESSOR_MODE PreviousMode)
KPROCESSOR_MODE NTAPI ExGetPreviousMode(VOID)
LONG NTAPI KeSetBasePriorityThread(IN PKTHREAD Thread, IN LONG Increment)
VOID NTAPI ObDereferenceObject(IN PVOID Object)
#define PROCESS_SUSPEND_RESUME
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
static __inline NTSTATUS DefaultSetInfoBufferCheck(ULONG Class, const INFORMATION_CLASS_INFO *ClassList, ULONG ClassListEntries, PVOID Buffer, ULONG BufferLength, KPROCESSOR_MODE PreviousMode)
#define THREAD_SET_THREAD_TOKEN
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
SIZE_T QuotaPeakNonPagedPoolUsage
NTSTATUS NTAPI PspQueryDescriptorThread(IN PETHREAD Thread, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength, OUT PULONG ReturnLength OPTIONAL)
NTSTATUS NTAPI PspSetQuotaLimits(_In_ PEPROCESS Process, _In_ ULONG Unused, _In_ PVOID QuotaLimits, _In_ ULONG QuotaLimitsLength, _In_ KPROCESSOR_MODE PreviousMode)
VOID NTAPI KeBoostPriorityThread(IN PKTHREAD Thread, IN KPRIORITY Increment)
struct _QUOTA_LIMITS QUOTA_LIMITS
_Must_inspect_result_ _In_ ULONG Flags
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
VOID NTAPI MmGetImageInformation(OUT PSECTION_IMAGE_INFORMATION ImageInformation)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
struct _VM_COUNTERS_ * PVM_COUNTERS
EPROCESS_QUOTA_BLOCK PspDefaultQuotaBlock
ULONG NTAPI ObGetProcessHandleCount(IN PEPROCESS Process)
#define InterlockedCompareExchangePointer
_In_ THREADINFOCLASS ThreadInformationClass
struct _QUOTA_LIMITS * PQUOTA_LIMITS
BOOLEAN NTAPI KeReadStateThread(IN PKTHREAD Thread)
#define PsGetCurrentProcess
struct _PROCESS_PRIORITY_CLASS PROCESS_PRIORITY_CLASS
#define EXCEPTION_EXECUTE_HANDLER
NTSTATUS NTAPI MmGetExecuteOptions(IN PULONG ExecuteOptions)
NTSTATUS NTAPI PspSetPrimaryToken(IN PEPROCESS Process, IN HANDLE TokenHandle OPTIONAL, IN PACCESS_TOKEN Token OPTIONAL)
struct _OBJECT_NAME_INFORMATION OBJECT_NAME_INFORMATION
SIZE_T QuotaNonPagedPoolUsage
struct _PROCESS_BASIC_INFORMATION PROCESS_BASIC_INFORMATION
_In_ ACCESS_MASK _In_ ULONG _Out_ PHANDLE TokenHandle
NTSTATUS NTAPI DbgkOpenProcessDebugPort(IN PEPROCESS Process, IN KPROCESSOR_MODE PreviousMode, OUT HANDLE *DebugHandle)
#define CT_HIDE_FROM_DEBUGGER_BIT
NTSTATUS NTAPI NtSetInformationThread(IN HANDLE ThreadHandle, IN THREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength)
#define CT_BREAK_ON_TERMINATION_BIT
_Inout_ PFILE_OBJECT FileObject
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct _THREAD_BASIC_INFORMATION * PTHREAD_BASIC_INFORMATION
#define NtCurrentProcess()
POBJECT_TYPE LpcPortObjectType
#define PROCESS_PRIORITY_CLASS_ABOVE_NORMAL
struct _LIST_ENTRY * Flink
_In_ KPROCESSOR_MODE PreviousMode
struct _PROCESS_SESSION_INFORMATION * PPROCESS_SESSION_INFORMATION
#define THREAD_BASE_PRIORITY_LOWRT
#define PROCESS_PRIORITY_CLASS_REALTIME
#define _SEH2_YIELD(STMT_)
struct _PROCESS_FOREGROUND_BACKGROUND * PPROCESS_FOREGROUND_BACKGROUND
VOID NTAPI KeQueryValuesProcess(IN PKPROCESS Process, PPROCESS_VALUES Values)
#define NT_SUCCESS(StatCode)
#define PSF_NO_DEBUG_INHERIT_BIT
#define THREAD_BASE_PRIORITY_IDLE
_In_opt_ PVOID _Out_ PLARGE_INTEGER Cookie
struct _PROCESS_BASIC_INFORMATION * PPROCESS_BASIC_INFORMATION
#define STATUS_PROCESS_IS_TERMINATING
_In_ ULONG _In_ ULONG _In_ ULONG _Out_ PKIRQL _Out_ PKAFFINITY Affinity
#define MEMORY_PRIORITY_BACKGROUND
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
#define STATUS_ACCESS_DENIED
_In_ ULONG _In_ ULONG _In_ ULONG Length
NTSTATUS NTAPI PsReferenceProcessFilePointer(IN PEPROCESS Process, OUT PFILE_OBJECT *FileObject)
NTSTATUS NTAPI NtQueryInformationThread(IN HANDLE ThreadHandle, IN THREADINFOCLASS ThreadInformationClass, OUT PVOID ThreadInformation, IN ULONG ThreadInformationLength, OUT PULONG ReturnLength OPTIONAL)
struct _SECTION_IMAGE_INFORMATION SECTION_IMAGE_INFORMATION
#define STATUS_UNSUCCESSFUL
PETHREAD NTAPI PsGetNextProcessThread(IN PEPROCESS Process, IN PETHREAD Thread OPTIONAL)
VOID NTAPI KeDetachProcess(VOID)
struct _PROCESS_PRIORITY_CLASS * PPROCESS_PRIORITY_CLASS
static const char * ImageName
union _LARGE_INTEGER LARGE_INTEGER
POBJECT_TYPE PsThreadType
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
NTSTATUS NTAPI MmSetExecuteOptions(IN ULONG ExecuteOptions)
#define STATUS_INVALID_INFO_CLASS
#define PROCESS_LUID_DOSDEVICES_ONLY
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define PspSetCrossThreadFlag(Thread, Flag)
#define PSF_VDM_ALLOWED_BIT
#define KeEnterCriticalRegion()
NTSTATUS NTAPI PsAssignImpersonationToken(IN PETHREAD Thread, IN HANDLE TokenHandle)
KPRIORITY NTAPI KeSetPriorityAndQuantumProcess(IN PKPROCESS Process, IN KPRIORITY Priority, IN UCHAR Quantum OPTIONAL)
struct _KERNEL_USER_TIMES KERNEL_USER_TIMES
INT64 MinimumWorkingSetSize
KAFFINITY KeActiveProcessors
VOID NTAPI PsSetProcessPriorityByClass(IN PEPROCESS Process, IN PSPROCESSPRIORITYMODE Type)
const LUID SeIncreaseBasePriorityPrivilege
BOOLEAN HasPrivilege(IN PPRIVILEGE_SET Privilege)
#define MEMORY_PRIORITY_FOREGROUND
const LUID SeTcbPrivilege
FORCEINLINE VOID ExAcquirePushLockShared(PEX_PUSH_LOCK PushLock)
#define KeLeaveCriticalRegion()
#define THREAD_BASE_PRIORITY_MIN
NTSTATUS NTAPI NtSetInformationProcess(IN HANDLE ProcessHandle, IN PROCESSINFOCLASS ProcessInformationClass, IN PVOID ProcessInformation, IN ULONG ProcessInformationLength)
enum _THREADINFOCLASS THREADINFOCLASS
struct _PROCESS_SESSION_INFORMATION PROCESS_SESSION_INFORMATION
KPRIORITY NTAPI KeSetPriorityThread(IN PKTHREAD Thread, IN KPRIORITY Priority)
_In_ THREADINFOCLASS _In_ ULONG ThreadInformationLength
VOID NTAPI KeAttachProcess(IN PKPROCESS Process)
ULONG NTAPI KeQueryRuntimeProcess(IN PKPROCESS Process, OUT PULONG UserTime)
NTSTATUS NTAPI MmSetMemoryPriorityProcess(IN PEPROCESS Process, IN UCHAR MemoryPriority)
INT64 MaximumWorkingSetSize
UNICODE_STRING * PUNICODE_STRING
struct _IO_COUNTERS IO_COUNTERS
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
#define PROCESS_SET_SESSIONID
#define ObReferenceObject
FORCEINLINE VOID ExReleasePushLockShared(PEX_PUSH_LOCK PushLock)
#define PspSetProcessFlag(Process, Flag)
static LIST_ENTRY ThreadListHead
enum _PROCESSINFOCLASS PROCESSINFOCLASS
#define THREAD_QUERY_INFORMATION
ULONG NTAPI PsGetProcessSessionId(IN PEPROCESS Process)
BOOLEAN NTAPI SeCheckPrivilegedObject(IN LUID PrivilegeValue, IN HANDLE ObjectHandle, IN ACCESS_MASK DesiredAccess, IN KPROCESSOR_MODE PreviousMode)
#define PROCESS_SET_INFORMATION
PVOID * TlsExpansionSlots
#define _SEH2_EXCEPT(...)
SIZE_T PeakWorkingSetSize
#define ExFreePoolWithTag(_P, _T)
#define _SEH2_GetExceptionCode()
UCHAR NTAPI KeSetIdealProcessorThread(IN PKTHREAD Thread, IN UCHAR Processor)
BOOLEAN NTAPI PsIsThreadTerminating(IN PETHREAD Thread)
_In_ HANDLE ProcessHandle
ULONG NTAPI ObIsLUIDDeviceMapsEnabled(VOID)
LONG NTAPI KeQueryBasePriorityThread(IN PKTHREAD Thread)
POBJECT_TYPE PsProcessType
union _LARGE_INTEGER * PLARGE_INTEGER
#define TLS_MINIMUM_AVAILABLE
struct _IO_COUNTERS * PIO_COUNTERS
#define STATUS_PORT_ALREADY_SET
PULONG MinorVersion OPTIONAL