1 /******************************************************************************
2 * Process Manager Functions *
3 ******************************************************************************/
10 IN OUT PVOID
*ApcContext
,
11 IN OUT PVOID
*ApcRoutine
);
15 * PsGetCurrentProcess(VOID)
17 #define PsGetCurrentProcess IoGetCurrentProcess
19 #if !defined(_PSGETCURRENTTHREAD_)
20 #define _PSGETCURRENTTHREAD_
24 PsGetCurrentThread(VOID
)
26 return (PETHREAD
)KeGetCurrentThread();
28 #endif /* !_PSGETCURRENTTHREAD_ */
37 OUT PHANDLE ProcessHandle
,
38 IN ACCESS_MASK DesiredAccess
,
39 IN POBJECT_ATTRIBUTES ObjectAttributes
,
40 IN PCLIENT_ID ClientId OPTIONAL
);
45 NtQueryInformationProcess(
46 IN HANDLE ProcessHandle
,
47 IN PROCESSINFOCLASS ProcessInformationClass
,
48 OUT PVOID ProcessInformation OPTIONAL
,
49 IN ULONG ProcessInformationLength
,
50 OUT PULONG ReturnLength OPTIONAL
);
57 PsLookupProcessByProcessId(
59 OUT PEPROCESS
*Process
);
64 PsLookupThreadByThreadId(
65 IN HANDLE UniqueThreadId
,
66 OUT PETHREAD
*Thread
);
69 #if (NTDDI_VERSION >= NTDDI_WIN2K)
76 OUT PHANDLE ThreadHandle
,
77 IN ULONG DesiredAccess
,
78 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
79 IN HANDLE ProcessHandle OPTIONAL
,
80 OUT PCLIENT_ID ClientId OPTIONAL
,
81 IN PKSTART_ROUTINE StartRoutine
,
82 IN PVOID StartContext OPTIONAL
);
87 PsTerminateSystemThread(
88 IN NTSTATUS ExitStatus
);
96 PsSetCreateProcessNotifyRoutine(
97 IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine
,
103 PsSetCreateThreadNotifyRoutine(
104 IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine
);
109 PsSetLoadImageNotifyRoutine(
110 IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine
);
115 PsGetCurrentProcessId(VOID
);
120 PsGetCurrentThreadId(VOID
);
126 OUT PULONG MajorVersion OPTIONAL
,
127 OUT PULONG MinorVersion OPTIONAL
,
128 OUT PULONG BuildNumber OPTIONAL
,
129 OUT PUNICODE_STRING CSDVersion OPTIONAL
);
136 PsReferenceImpersonationToken(
137 IN OUT PETHREAD Thread
,
138 OUT PBOOLEAN CopyOnOpen
,
139 OUT PBOOLEAN EffectiveOnly
,
140 OUT PSECURITY_IMPERSONATION_LEVEL ImpersonationLevel
);
145 PsGetProcessExitTime(VOID
);
150 PsIsThreadTerminating(
157 IN OUT PETHREAD Thread
,
158 IN PACCESS_TOKEN Token
,
159 IN BOOLEAN CopyOnOpen
,
160 IN BOOLEAN EffectiveOnly
,
161 IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
);
166 PsDisableImpersonation(
167 IN OUT PETHREAD Thread
,
168 IN OUT PSE_IMPERSONATION_STATE ImpersonationState
);
173 PsRestoreImpersonation(
175 IN PSE_IMPERSONATION_STATE ImpersonationState
);
180 PsRevertToSelf(VOID
);
186 IN PEPROCESS Process
,
187 IN POOL_TYPE PoolType
,
188 IN ULONG_PTR Amount
);
194 IN PEPROCESS Process
,
195 IN POOL_TYPE PoolType
,
196 IN ULONG_PTR Amount
);
201 PsAssignImpersonationToken(
203 IN HANDLE Token OPTIONAL
);
208 PsReferencePrimaryToken(
209 IN OUT PEPROCESS Process
);
211 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
212 $
if (_NTDDK_
|| _NTIFS_
)
213 #if (NTDDI_VERSION >= NTDDI_WINXP)
221 IN PEPROCESS Process
);
232 PsRemoveCreateThreadNotifyRoutine(
233 IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine
);
238 PsRemoveLoadImageNotifyRoutine(
239 IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine
);
244 PsGetProcessCreateTimeQuadPart(
245 IN PEPROCESS Process
);
252 PsDereferencePrimaryToken(
253 IN PACCESS_TOKEN PrimaryToken
);
258 PsDereferenceImpersonationToken(
259 IN PACCESS_TOKEN ImpersonationToken
);
264 PsChargeProcessPoolQuota(
265 IN PEPROCESS Process
,
266 IN POOL_TYPE PoolType
,
267 IN ULONG_PTR Amount
);
275 $
if (_NTDDK_
|| _NTIFS_
)
276 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
280 #if (NTDDI_VERSION >= NTDDI_WS03)
284 PsGetThreadProcessId(
286 #endif /* (NTDDI_VERSION >= NTDDI_WS03) */
288 #if (NTDDI_VERSION >= NTDDI_VISTA)
293 PsSetCurrentThreadPrefetching(
294 IN BOOLEAN Prefetching
);
299 PsIsCurrentThreadPrefetching(VOID
);
301 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
303 #if (NTDDI_VERSION >= NTDDI_VISTASP1)
307 PsSetCreateProcessNotifyRoutineEx(
308 IN PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine
,
310 #endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */