Synchronize up to trunk's revision r57784.
[reactos.git] / include / xdk / psfuncs.h
1 /******************************************************************************
2 * Process Manager Functions *
3 ******************************************************************************/
4 $if (_WDMDDK_)
5
6 NTKERNELAPI
7 NTSTATUS
8 NTAPI
9 PsWrapApcWow64Thread(
10 _Inout_ PVOID *ApcContext,
11 _Inout_ PVOID *ApcRoutine);
12
13 /*
14 * PEPROCESS
15 * PsGetCurrentProcess(VOID)
16 */
17 #define PsGetCurrentProcess IoGetCurrentProcess
18
19 #if !defined(_PSGETCURRENTTHREAD_)
20 #define _PSGETCURRENTTHREAD_
21 _IRQL_requires_max_(DISPATCH_LEVEL)
22 FORCEINLINE
23 PETHREAD
24 NTAPI
25 PsGetCurrentThread(VOID)
26 {
27 return (PETHREAD)KeGetCurrentThread();
28 }
29 #endif /* !_PSGETCURRENTTHREAD_ */
30
31 $endif (_WDMDDK_)
32 $if (_NTDDK_)
33
34 __kernel_entry
35 NTSYSCALLAPI
36 NTSTATUS
37 NTAPI
38 NtOpenProcess(
39 _Out_ PHANDLE ProcessHandle,
40 _In_ ACCESS_MASK DesiredAccess,
41 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
42 _In_opt_ PCLIENT_ID ClientId);
43
44 NTSYSCALLAPI
45 NTSTATUS
46 NTAPI
47 NtQueryInformationProcess(
48 IN HANDLE ProcessHandle,
49 IN PROCESSINFOCLASS ProcessInformationClass,
50 OUT PVOID ProcessInformation OPTIONAL,
51 IN ULONG ProcessInformationLength,
52 OUT PULONG ReturnLength OPTIONAL);
53 $endif (_NTDDK_)
54 $if (_NTIFS_)
55
56 _Must_inspect_result_
57 _IRQL_requires_max_(APC_LEVEL)
58 NTKERNELAPI
59 NTSTATUS
60 NTAPI
61 PsLookupProcessByProcessId(
62 _In_ HANDLE ProcessId,
63 _Outptr_ PEPROCESS *Process);
64
65 _Must_inspect_result_
66 _IRQL_requires_max_(APC_LEVEL)
67 NTKERNELAPI
68 NTSTATUS
69 NTAPI
70 PsLookupThreadByThreadId(
71 _In_ HANDLE UniqueThreadId,
72 _Outptr_ PETHREAD *Thread);
73 $endif (_NTIFS_)
74
75 #if (NTDDI_VERSION >= NTDDI_WIN2K)
76
77 $if (_WDMDDK_)
78 _IRQL_requires_max_(APC_LEVEL)
79 _Post_satisfies_(return <= 0)
80 _Must_inspect_result_
81 NTKERNELAPI
82 NTSTATUS
83 NTAPI
84 PsCreateSystemThread(
85 _Out_ PHANDLE ThreadHandle,
86 _In_ ULONG DesiredAccess,
87 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes,
88 _In_opt_ HANDLE ProcessHandle,
89 _Out_opt_ PCLIENT_ID ClientId,
90 _In_ PKSTART_ROUTINE StartRoutine,
91 _In_opt_ _When_(return==0, __drv_aliasesMem) PVOID StartContext);
92
93 _IRQL_requires_max_(PASSIVE_LEVEL)
94 NTKERNELAPI
95 NTSTATUS
96 NTAPI
97 PsTerminateSystemThread(
98 _In_ NTSTATUS ExitStatus);
99
100 $endif (_WDMDDK_)
101 $if (_NTDDK_)
102
103 _IRQL_requires_max_(PASSIVE_LEVEL)
104 NTKERNELAPI
105 NTSTATUS
106 NTAPI
107 PsSetCreateProcessNotifyRoutine(
108 _In_ PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
109 _In_ BOOLEAN Remove);
110
111 _IRQL_requires_max_(PASSIVE_LEVEL)
112 NTKERNELAPI
113 NTSTATUS
114 NTAPI
115 PsSetCreateThreadNotifyRoutine(
116 _In_ PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
117
118 _IRQL_requires_max_(PASSIVE_LEVEL)
119 NTKERNELAPI
120 NTSTATUS
121 NTAPI
122 PsSetLoadImageNotifyRoutine(
123 _In_ PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine);
124
125 NTKERNELAPI
126 HANDLE
127 NTAPI
128 PsGetCurrentProcessId(VOID);
129
130 _IRQL_requires_max_(DISPATCH_LEVEL)
131 NTKERNELAPI
132 HANDLE
133 NTAPI
134 PsGetCurrentThreadId(VOID);
135
136 NTKERNELAPI
137 BOOLEAN
138 NTAPI
139 PsGetVersion(
140 OUT PULONG MajorVersion OPTIONAL,
141 OUT PULONG MinorVersion OPTIONAL,
142 OUT PULONG BuildNumber OPTIONAL,
143 OUT PUNICODE_STRING CSDVersion OPTIONAL);
144 $endif (_NTDDK_)
145 $if (_NTIFS_)
146
147 _IRQL_requires_max_(APC_LEVEL)
148 NTKERNELAPI
149 PACCESS_TOKEN
150 NTAPI
151 PsReferenceImpersonationToken(
152 _Inout_ PETHREAD Thread,
153 _Out_ PBOOLEAN CopyOnOpen,
154 _Out_ PBOOLEAN EffectiveOnly,
155 _Out_ PSECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
156
157 _IRQL_requires_max_(APC_LEVEL)
158 NTKERNELAPI
159 LARGE_INTEGER
160 NTAPI
161 PsGetProcessExitTime(VOID);
162
163 _IRQL_requires_max_(DISPATCH_LEVEL)
164 NTKERNELAPI
165 BOOLEAN
166 NTAPI
167 PsIsThreadTerminating(
168 _In_ PETHREAD Thread);
169
170 _Must_inspect_result_
171 _IRQL_requires_max_(PASSIVE_LEVEL)
172 NTKERNELAPI
173 NTSTATUS
174 NTAPI
175 PsImpersonateClient(
176 _Inout_ PETHREAD Thread,
177 _In_opt_ PACCESS_TOKEN Token,
178 _In_ BOOLEAN CopyOnOpen,
179 _In_ BOOLEAN EffectiveOnly,
180 _In_ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
181
182 _IRQL_requires_max_(PASSIVE_LEVEL)
183 NTKERNELAPI
184 BOOLEAN
185 NTAPI
186 PsDisableImpersonation(
187 _Inout_ PETHREAD Thread,
188 _Inout_ PSE_IMPERSONATION_STATE ImpersonationState);
189
190 _IRQL_requires_max_(PASSIVE_LEVEL)
191 NTKERNELAPI
192 VOID
193 NTAPI
194 PsRestoreImpersonation(
195 _Inout_ PETHREAD Thread,
196 _In_ PSE_IMPERSONATION_STATE ImpersonationState);
197
198 _IRQL_requires_max_(PASSIVE_LEVEL)
199 NTKERNELAPI
200 VOID
201 NTAPI
202 PsRevertToSelf(VOID);
203
204 _IRQL_requires_max_(APC_LEVEL)
205 NTKERNELAPI
206 VOID
207 NTAPI
208 PsChargePoolQuota(
209 _In_ PEPROCESS Process,
210 _In_ POOL_TYPE PoolType,
211 _In_ ULONG_PTR Amount);
212
213 _IRQL_requires_max_(APC_LEVEL)
214 NTKERNELAPI
215 VOID
216 NTAPI
217 PsReturnPoolQuota(
218 _In_ PEPROCESS Process,
219 _In_ POOL_TYPE PoolType,
220 _In_ ULONG_PTR Amount);
221
222 _IRQL_requires_max_(PASSIVE_LEVEL)
223 NTKERNELAPI
224 NTSTATUS
225 NTAPI
226 PsAssignImpersonationToken(
227 _In_ PETHREAD Thread,
228 _In_opt_ HANDLE Token);
229
230 _IRQL_requires_max_(PASSIVE_LEVEL)
231 NTKERNELAPI
232 HANDLE
233 NTAPI
234 PsReferencePrimaryToken(
235 _Inout_ PEPROCESS Process);
236 $endif (_NTIFS_)
237 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
238 $if (_NTDDK_ || _NTIFS_)
239 #if (NTDDI_VERSION >= NTDDI_WINXP)
240 $endif (_NTDDK_ || _NTIFS_)
241
242 $if (_NTDDK_)
243 _IRQL_requires_max_(DISPATCH_LEVEL)
244 NTKERNELAPI
245 HANDLE
246 NTAPI
247 PsGetProcessId(
248 _In_ PEPROCESS Process);
249
250 _IRQL_requires_max_(DISPATCH_LEVEL)
251 NTKERNELAPI
252 HANDLE
253 NTAPI
254 PsGetThreadId(
255 _In_ PETHREAD Thread);
256
257 NTKERNELAPI
258 NTSTATUS
259 NTAPI
260 PsRemoveCreateThreadNotifyRoutine(
261 _In_ PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
262
263 _IRQL_requires_max_(PASSIVE_LEVEL)
264 NTKERNELAPI
265 NTSTATUS
266 NTAPI
267 PsRemoveLoadImageNotifyRoutine(
268 _In_ PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine);
269
270 _IRQL_requires_max_(DISPATCH_LEVEL)
271 NTKERNELAPI
272 LONGLONG
273 NTAPI
274 PsGetProcessCreateTimeQuadPart(
275 _In_ PEPROCESS Process);
276 $endif (_NTDDK_)
277 $if (_NTIFS_)
278
279 _IRQL_requires_max_(PASSIVE_LEVEL)
280 NTKERNELAPI
281 VOID
282 NTAPI
283 PsDereferencePrimaryToken(
284 _In_ PACCESS_TOKEN PrimaryToken);
285
286 _IRQL_requires_max_(PASSIVE_LEVEL)
287 NTKERNELAPI
288 VOID
289 NTAPI
290 PsDereferenceImpersonationToken(
291 _In_ PACCESS_TOKEN ImpersonationToken);
292
293 _Must_inspect_result_
294 _IRQL_requires_max_(APC_LEVEL)
295 NTKERNELAPI
296 NTSTATUS
297 NTAPI
298 PsChargeProcessPoolQuota(
299 _In_ PEPROCESS Process,
300 _In_ POOL_TYPE PoolType,
301 _In_ ULONG_PTR Amount);
302
303 NTKERNELAPI
304 BOOLEAN
305 NTAPI
306 PsIsSystemThread(
307 _In_ PETHREAD Thread);
308 $endif (_NTIFS_)
309 $if (_NTDDK_ || _NTIFS_)
310 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
311 $endif (_NTDDK_ || _NTIFS_)
312
313 $if (_NTDDK_)
314 #if (NTDDI_VERSION >= NTDDI_WS03)
315 NTKERNELAPI
316 HANDLE
317 NTAPI
318 PsGetThreadProcessId(
319 IN PETHREAD Thread);
320 #endif /* (NTDDI_VERSION >= NTDDI_WS03) */
321
322 #if (NTDDI_VERSION >= NTDDI_VISTA)
323
324 NTKERNELAPI
325 BOOLEAN
326 NTAPI
327 PsSetCurrentThreadPrefetching(
328 IN BOOLEAN Prefetching);
329
330 NTKERNELAPI
331 BOOLEAN
332 NTAPI
333 PsIsCurrentThreadPrefetching(VOID);
334
335 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
336
337 #if (NTDDI_VERSION >= NTDDI_VISTASP1)
338 NTKERNELAPI
339 NTSTATUS
340 NTAPI
341 PsSetCreateProcessNotifyRoutineEx(
342 IN PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine,
343 IN BOOLEAN Remove);
344 #endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */
345 $endif (_NTDDK_)