1 #ifndef __INCLUDE_INTERNAL_PS_H
2 #define __INCLUDE_INTERNAL_PS_H
4 /* Forward declarations. */
9 #include <internal/arch/ps.h>
11 extern LCID PsDefaultThreadLocaleId
;
12 extern LCID PsDefaultSystemLocaleId
;
13 extern LIST_ENTRY PspReaperListHead
;
14 extern WORK_QUEUE_ITEM PspReaperWorkItem
;
15 extern BOOLEAN PspReaping
;
16 extern PEPROCESS PsInitialSystemProcess
;
17 extern PEPROCESS PsIdleProcess
;
18 extern LIST_ENTRY PsActiveProcessHead
;
19 extern FAST_MUTEX PspActiveProcessMutex
;
20 extern LARGE_INTEGER ShortPsLockDelay
, PsLockTimeout
;
21 extern EPROCESS_QUOTA_BLOCK PspDefaultQuotaBlock
;
23 /* Top level irp definitions. */
24 #define FSRTL_FSP_TOP_LEVEL_IRP (0x01)
25 #define FSRTL_CACHE_TOP_LEVEL_IRP (0x02)
26 #define FSRTL_MOD_WRITE_TOP_LEVEL_IRP (0x03)
27 #define FSRTL_FAST_IO_TOP_LEVEL_IRP (0x04)
28 #define FSRTL_MAX_TOP_LEVEL_IRP_FLAG (0x04)
30 #define MAX_PROCESS_NOTIFY_ROUTINE_COUNT 8
31 #define MAX_LOAD_IMAGE_NOTIFY_ROUTINE_COUNT 8
35 PiInitDefaultLocale(VOID
);
39 PiInitProcessManager(VOID
);
43 PiShutdownProcessManager(VOID
);
47 PsInitThreadManagment(VOID
);
51 PsInitProcessManagment(VOID
);
55 PsInitIdleThread(VOID
);
59 PiTerminateProcessThreads(
66 PsTerminateCurrentThread(NTSTATUS ExitStatus
);
70 PsTerminateOtherThread(
77 PsReleaseThread(PETHREAD Thread
);
82 PKSTART_ROUTINE StartRoutine
,
88 PsBeginThreadWithContextInternal(VOID
);
92 PiKillMostProcesses(VOID
);
103 PiInitApcManagement(VOID
);
107 PiDeleteThread(PVOID ObjectBody
);
115 PsInitializeThreadReaper(VOID
);
119 PsQueueThreadReap(PETHREAD Thread
);
126 POBJECT_ATTRIBUTES ObjectAttributes
,
127 KPROCESSOR_MODE AccessMode
,
133 PsReferenceEffectiveToken(
135 PTOKEN_TYPE TokenType
,
137 PSECURITY_IMPERSONATION_LEVEL Level
142 PsOpenTokenOfProcess(
143 HANDLE ProcessHandle
,
149 PspTerminateProcessThreads(
170 PspAssignPrimaryToken(
179 PKNORMAL_ROUTINE
*NormalRoutine
,
180 PVOID
*NormalContext
,
181 PVOID
*SystemArgument1
,
182 PVOID
*SystemArgument2
187 PspInitializeProcessSecurity(
189 PEPROCESS Parent OPTIONAL
194 PspSystemThreadStartup(
195 PKSTART_ROUTINE StartRoutine
,
201 PsInitializeIdleOrFirstThread(
204 PKSTART_ROUTINE StartRoutine
,
205 KPROCESSOR_MODE AccessMode
,
211 PiDeleteProcess(PVOID ObjectBody
);
215 PspReapRoutine(PVOID Context
);
219 PspExitThread(NTSTATUS ExitStatus
);
223 PspTerminateThreadByPointer(
230 PsUnfreezeOtherThread(PETHREAD Thread
);
234 PsFreezeOtherThread(PETHREAD Thread
);
238 PsFreezeProcessThreads(PEPROCESS Process
);
242 PsUnfreezeProcessThreads(PEPROCESS Process
);
246 PsEnumThreadsByProcess(PEPROCESS Process
);
250 PsGetNextProcess(PEPROCESS OldProcess
);
254 PsApplicationProcessorInit(VOID
);
258 PsPrepareForApplicationProcessorInit(ULONG Id
);
262 PsIdleThreadMain(PVOID Context
);
266 PiSuspendThreadRundownRoutine(PKAPC Apc
);
270 PiSuspendThreadKernelRoutine(
272 PKNORMAL_ROUTINE
* NormalRoutine
,
273 PVOID
* NormalContext
,
274 PVOID
* SystemArgument1
,
275 PVOID
* SystemArguemnt2
280 PiSuspendThreadNormalRoutine(
282 PVOID SystemArgument1
,
283 PVOID SystemArgument2
288 PsInitialiseSuspendImplementation(VOID
);
292 PspExitProcess(PEPROCESS Process
);
296 PspDeleteProcess(PVOID ObjectBody
);
300 PspDeleteThread(PVOID ObjectBody
);
305 PsInitWin32Thread(PETHREAD Thread
);
309 PsTerminateWin32Process(PEPROCESS Process
);
313 PsTerminateWin32Thread(PETHREAD Thread
);
317 PsInitialiseW32Call(VOID
);
321 PspRunCreateThreadNotifyRoutines(
328 PspRunCreateProcessNotifyRoutines(
335 PspRunLegoRoutine(IN PKTHREAD Thread
);
340 PsInitJobManagment(VOID
);
346 PEPROCESS ParentProcess
351 PspDestroyQuotaBlock(PEPROCESS Process
);
362 PsLocateSystemDll(VOID
);
366 PspGetSystemDllEntryPoints(VOID
);
377 PsUnlockProcess(PEPROCESS Process
);
379 #endif /* __INCLUDE_INTERNAL_PS_H */