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