#include <stdint.h>
#include <stddef.h>
#include "me.h"
#include "ht.h"
#include "ob.h"
#include "core.h"
#include "exception.h"
Go to the source code of this file.
|
| enum | _THREAD_STATE {
THREAD_RUNNING
, THREAD_READY
, THREAD_BLOCKED
, THREAD_TERMINATING
,
THREAD_TERMINATED
, THREAD_ZOMBIE
} |
| enum | _PROCESS_STATE {
PROCESS_RUNNING = 0
, PROCESS_READY
, PROCESS_WAITING
, PROCESS_TERMINATING
,
PROCESS_TERMINATED
, PROCESS_SUSPENDED
} |
| enum | _PS_PHASE_ROUTINE { PS_PHASE_INITIALIZE_SYSTEM = 0
, PS_PHASE_INITIALIZE_WORKER_THREADS
} |
| enum | _PROCESS_FLAGS { ProcessBreakOnTermination = (1 << 0)
, ProcessBeingTerminated = (1 << 1)
, ProcessBeingDeleted = (1 << 2)
} |
|
| MTSTATUS | PsCreateProcess (IN const char *ExecutablePath, OUT PHANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, _In_Opt HANDLE ParentProcess) |
| MTSTATUS | PsCreateThread (HANDLE ProcessHandle, PHANDLE ThreadHandle, ThreadEntry EntryPoint, THREAD_PARAMETER ThreadParameter, TimeSliceTicks TimeSlice, ThreadEntry MtdllEntrypoint) |
| void | MsYieldExecution (PTRAP_FRAME threadRegisters) |
| MTSTATUS | PsCreateSystemThread (ThreadEntry entry, THREAD_PARAMETER parameter, TimeSliceTicks TIMESLICE, _Out_Opt PETHREAD *OutThread) |
| MTSTATUS | PsInitializeSystem (IN enum _PS_PHASE_ROUTINE Phase) |
| void | PsDeferKernelStackDeletion (void *StackBase, bool IsLarge) |
| MTSTATUS | PsTerminateProcess (IN PEPROCESS Process, IN MTSTATUS ExitCode) |
| MTSTATUS | PsTerminateThread (IN PETHREAD Thread, IN MTSTATUS ExitStatus) |
| NORETURN void | PspExitThread (IN MTSTATUS ExitStatus) |
| void | PsDeleteThread (IN void *Object) |
| void | PsDeleteProcess (IN void *ProcessObject) |
| PETHREAD | PsGetNextProcessThread (IN PEPROCESS Process, _In_Opt PETHREAD LastThread) |
| PETHREAD | PsGetCurrentThread (void) |
| void | PsInitializeWorkerThreads (void) |
| void | PsInitializeCidTable (void) |
| FORCEINLINE PEPROCESS | PsGetCurrentProcess (void) |
| FORCEINLINE PETHREAD | PsGetEThreadFromIThread (IN PITHREAD IThread) |
| FORCEINLINE PEPROCESS | PsGetEProcessFromIProcess (IN PIPROCESS IProcess) |
| FORCEINLINE bool | PsIsKernelThread (IN PETHREAD Thread) |
| FORCEINLINE MTSTATUS | GetExceptionCode (void) |
| HANDLE | PsAllocateProcessId (IN PEPROCESS Process) |
| HANDLE | PsAllocateThreadId (IN PETHREAD Thread) |
| PEPROCESS | PsLookupProcessByProcessId (IN HANDLE ProcessId) |
| PETHREAD | PsLookupThreadByThreadId (IN HANDLE ThreadId) |
| void | PsFreeCid (IN HANDLE Cid) |
| FORCEINLINE void | MeEnqueueThreadWithLock (Queue *queue, PETHREAD thread) |
| FORCEINLINE PETHREAD | MeDequeueThreadWithLock (Queue *q) |
| FORCEINLINE void | MeEnqueueThread (Queue *queue, PETHREAD thread) |
| FORCEINLINE PETHREAD | MeDequeueThread (Queue *q) |
◆ MT_PROCESS_ALL_ACCESS
| #define MT_PROCESS_ALL_ACCESS 0x03FF |
Definition at line 89 of file ps.h.
◆ MT_PROCESS_CREATE_PROCESS
| #define MT_PROCESS_CREATE_PROCESS 0x0200 |
Definition at line 87 of file ps.h.
◆ MT_PROCESS_CREATE_THREAD
| #define MT_PROCESS_CREATE_THREAD 0x0002 |
Definition at line 79 of file ps.h.
◆ MT_PROCESS_DUP_HANDLE
| #define MT_PROCESS_DUP_HANDLE 0x0020 |
Definition at line 83 of file ps.h.
◆ MT_PROCESS_QUERY_INFO
| #define MT_PROCESS_QUERY_INFO 0x0080 |
Definition at line 85 of file ps.h.
◆ MT_PROCESS_SET_INFO
| #define MT_PROCESS_SET_INFO 0x0040 |
Definition at line 84 of file ps.h.
◆ MT_PROCESS_SUSPEND_RESUME
| #define MT_PROCESS_SUSPEND_RESUME 0x0100 |
Definition at line 86 of file ps.h.
◆ MT_PROCESS_TERMINATE
| #define MT_PROCESS_TERMINATE 0x0001 |
Definition at line 78 of file ps.h.
◆ MT_PROCESS_VM_OPERATION
| #define MT_PROCESS_VM_OPERATION 0x0004 |
Definition at line 80 of file ps.h.
◆ MT_PROCESS_VM_READ
| #define MT_PROCESS_VM_READ 0x0008 |
Definition at line 81 of file ps.h.
◆ MT_PROCESS_VM_WRITE
| #define MT_PROCESS_VM_WRITE 0x0010 |
Definition at line 82 of file ps.h.
◆ MT_THREAD_ALL_ACCESS
| #define MT_THREAD_ALL_ACCESS 0x003F |
Definition at line 72 of file ps.h.
◆ MT_THREAD_GET_CONTEXT
| #define MT_THREAD_GET_CONTEXT 0x0008 |
Definition at line 68 of file ps.h.
◆ MT_THREAD_QUERY_INFO
| #define MT_THREAD_QUERY_INFO 0x0010 |
Definition at line 69 of file ps.h.
◆ MT_THREAD_SET_CONTEXT
| #define MT_THREAD_SET_CONTEXT 0x0004 |
Definition at line 67 of file ps.h.
◆ MT_THREAD_SET_INFO
| #define MT_THREAD_SET_INFO 0x0020 |
Definition at line 70 of file ps.h.
◆ MT_THREAD_SUSPEND_RESUME
| #define MT_THREAD_SUSPEND_RESUME 0x0002 |
Definition at line 66 of file ps.h.
◆ MT_THREAD_TERMINATE
| #define MT_THREAD_TERMINATE 0x0001 |
Definition at line 65 of file ps.h.
◆ PROCESS_STACK_ALIGNMENT
| #define PROCESS_STACK_ALIGNMENT 16 |
Definition at line 213 of file ps.h.
◆ PROCESS_STACK_SIZE
| #define PROCESS_STACK_SIZE (32*1024) |
Definition at line 212 of file ps.h.
◆ EPROCESS
◆ ETHREAD
◆ LDR_DATA_TABLE_ENTRY
◆ MT_MODULE_INFO
◆ MT_TIB
◆ MTDLL_BASIC_TYPES
◆ PEB
◆ PEB_LDR_DATA
◆ PEPROCESS
◆ PETHREAD
◆ PLDR_DATA_TABLE_ENTRY
◆ PMT_TIB
◆ PMTDLL_BASIC_TYPES
◆ PPEB
◆ PPEB_LDR_DATA
◆ PPROCESS_STATE
◆ PROCESS_FLAGS
◆ PROCESS_STATE
◆ PS_PHASE_ROUTINE
◆ PSTACK_REAPER_ENTRY
◆ PTEB
◆ PTHREAD_STATE
◆ STACK_REAPER_ENTRY
◆ TEB
◆ THREAD_PARAMETER
Definition at line 217 of file ps.h.
◆ THREAD_STATE
◆ ThreadEntry
Definition at line 218 of file ps.h.
◆ _PROCESS_FLAGS
| Enumerator |
|---|
| ProcessBreakOnTermination | |
| ProcessBeingTerminated | |
| ProcessBeingDeleted | |
Definition at line 91 of file ps.h.
◆ _PROCESS_STATE
| Enumerator |
|---|
| PROCESS_RUNNING | |
| PROCESS_READY | |
| PROCESS_WAITING | |
| PROCESS_TERMINATING | |
| PROCESS_TERMINATED | |
| PROCESS_SUSPENDED | |
Definition at line 46 of file ps.h.
◆ _PS_PHASE_ROUTINE
| Enumerator |
|---|
| PS_PHASE_INITIALIZE_SYSTEM | |
| PS_PHASE_INITIALIZE_WORKER_THREADS | |
Definition at line 55 of file ps.h.
◆ _THREAD_STATE
| Enumerator |
|---|
| THREAD_RUNNING | |
| THREAD_READY | |
| THREAD_BLOCKED | |
| THREAD_TERMINATING | |
| THREAD_TERMINATED | |
| THREAD_ZOMBIE | |
Definition at line 37 of file ps.h.
◆ GetExceptionCode()
Definition at line 346 of file ps.h.
◆ MeDequeueThread()
Definition at line 475 of file ps.h.
◆ MeDequeueThreadWithLock()
Definition at line 415 of file ps.h.
◆ MeEnqueueThread()
Definition at line 452 of file ps.h.
◆ MeEnqueueThreadWithLock()
Definition at line 385 of file ps.h.
◆ MsYieldExecution()
◆ PsAllocateProcessId()
Definition at line 60 of file cid.c.
◆ PsAllocateThreadId()
Definition at line 89 of file cid.c.
◆ PsCreateProcess()
◆ PsCreateSystemThread()
◆ PsCreateThread()
◆ PsDeferKernelStackDeletion()
| void PsDeferKernelStackDeletion |
( |
void * | StackBase, |
|
|
bool | IsLarge ) |
◆ PsDeleteProcess()
| void PsDeleteProcess |
( |
IN void * | ProcessObject | ) |
|
◆ PsDeleteThread()
| void PsDeleteThread |
( |
IN void * | Object | ) |
|
◆ PsFreeCid()
◆ PsGetCurrentProcess()
Definition at line 300 of file ps.h.
◆ PsGetCurrentThread()
◆ PsGetEProcessFromIProcess()
Definition at line 325 of file ps.h.
◆ PsGetEThreadFromIThread()
Definition at line 315 of file ps.h.
◆ PsGetNextProcessThread()
◆ PsInitializeCidTable()
| void PsInitializeCidTable |
( |
void | | ) |
|
Definition at line 27 of file cid.c.
◆ PsInitializeSystem()
◆ PsInitializeWorkerThreads()
| void PsInitializeWorkerThreads |
( |
void | | ) |
|
◆ PsIsKernelThread()
Definition at line 335 of file ps.h.
◆ PsLookupProcessByProcessId()
◆ PsLookupThreadByThreadId()
◆ PspExitThread()
◆ PsTerminateProcess()
◆ PsTerminateThread()
◆ PsInitialSystemProcess
The Stack Overflow check only checks for minor overflows, that don't completely smash the stack, yet do change the canaries (since it only checks in function epilogue) Complete stack smashes are guarded with the guard page in MiCreateKernelStack.
Definition at line 165 of file kernel.c.