migrate substitution keywords to SVN
[reactos.git] / reactos / include / ddk / psfuncs.h
1 /* $Id$
2 */
3 #ifndef _INCLUDE_DDK_PSFUNCS_H
4 #define _INCLUDE_DDK_PSFUNCS_H
5
6 NTSTATUS STDCALL
7 PsAssignImpersonationToken (IN struct _ETHREAD* Thread,
8 IN HANDLE TokenHandle);
9
10 /*
11 * Warning: Even though it returns HANDLE, it's not a real HANDLE but really a
12 * ULONG ProcessId! (Skywing)
13 */
14 HANDLE STDCALL
15 PsGetCurrentProcessId (VOID);
16
17 HANDLE STDCALL
18 PsGetCurrentThreadId (VOID);
19
20 /*
21 * FUNCTION: Creates a thread which executes in kernel mode
22 * ARGUMENTS:
23 * ThreadHandle (OUT) = Caller supplied storage for the returned thread
24 * handle
25 * DesiredAccess = Requested access to the thread
26 * ObjectAttributes = Object attributes (optional)
27 * ProcessHandle = Handle of process thread will run in
28 * NULL to use system process
29 * ClientId (OUT) = Caller supplied storage for the returned client id
30 * of the thread (optional)
31 * StartRoutine = Entry point for the thread
32 * StartContext = Argument supplied to the thread when it begins
33 * execution
34 * RETURNS: Success or failure status
35 */
36 NTSTATUS STDCALL
37 PsCreateSystemThread (PHANDLE ThreadHandle,
38 ACCESS_MASK DesiredAccess,
39 POBJECT_ATTRIBUTES ObjectAttributes,
40 HANDLE ProcessHandle,
41 PCLIENT_ID ClientId,
42 PKSTART_ROUTINE StartRoutine,
43 void *StartContext);
44
45 NTSTATUS STDCALL
46 PsTerminateSystemThread (NTSTATUS ExitStatus);
47
48 NTSTATUS STDCALL
49 PsCreateSystemProcess (PHANDLE ProcessHandle,
50 ACCESS_MASK DesiredAccess,
51 POBJECT_ATTRIBUTES ObjectAttributes);
52
53 NTSTATUS STDCALL PsCreateWin32Process(struct _EPROCESS* Process);
54 NTSTATUS STDCALL PsCreateWin32Thread(struct _ETHREAD* Thread);
55
56 VOID
57 STDCALL PsChargePoolQuota(
58 IN PEPROCESS Process,
59 IN POOL_TYPE PoolType,
60 IN ULONG_PTR Amount
61 );
62
63 NTSTATUS
64 STDCALL PsChargeProcessNonPagedPoolQuota (
65 IN PEPROCESS Process,
66 IN ULONG_PTR Amount
67 );
68
69 NTSTATUS
70 STDCALL PsChargeProcessPagedPoolQuota (
71 IN PEPROCESS Process,
72 IN ULONG_PTR Amount
73 );
74
75 NTSTATUS
76 STDCALL PsChargeProcessPoolQuota(
77 IN PEPROCESS Process,
78 IN POOL_TYPE PoolType,
79 IN ULONG_PTR Amount
80 );
81
82 VOID
83 STDCALL PsDereferenceImpersonationToken(
84 IN PACCESS_TOKEN ImpersonationToken
85 );
86
87 VOID
88 STDCALL PsDereferencePrimaryToken(
89 IN PACCESS_TOKEN PrimaryToken
90 );
91
92 BOOLEAN
93 STDCALL PsDisableImpersonation(
94 IN struct _ETHREAD* Thread,
95 IN PSE_IMPERSONATION_STATE ImpersonationState
96 );
97
98 ULONG
99 STDCALL PsGetCurrentProcessSessionId (
100 VOID
101 );
102
103 KPROCESSOR_MODE
104 STDCALL PsGetCurrentThreadPreviousMode (
105 VOID
106 );
107
108
109 PVOID
110 STDCALL PsGetCurrentThreadStackBase (
111 VOID
112 );
113
114 PVOID
115 STDCALL PsGetCurrentThreadStackLimit (
116 VOID
117 );
118
119 PVOID
120 STDCALL PsGetJobLock(
121 PEJOB Job
122 );
123
124 PVOID
125 STDCALL PsGetJobSessionId(
126 PEJOB Job
127 );
128
129 ULONG
130 STDCALL PsGetJobUIRestrictionsClass(
131 PEJOB Job
132 );
133
134 LONGLONG
135 STDCALL PsGetProcessCreateTimeQuadPart(
136 PEPROCESS Process
137 );
138
139 PVOID
140 STDCALL PsGetProcessDebugPort(
141 PEPROCESS Process
142 );
143
144
145 BOOLEAN
146 STDCALL PsGetProcessExitProcessCalled(
147 PEPROCESS Process
148 );
149
150 NTSTATUS
151 STDCALL PsGetProcessExitStatus(
152 PEPROCESS Process
153 );
154
155 HANDLE
156 STDCALL PsGetProcessId(
157 PEPROCESS Process
158 );
159
160 LPSTR
161 STDCALL PsGetProcessImageFileName(
162 PEPROCESS Process
163 );
164
165 HANDLE
166 STDCALL PsGetProcessInheritedFromUniqueProcessId(
167 PEPROCESS Process
168 );
169
170 PEJOB
171 STDCALL PsGetProcessJob(
172 PEPROCESS Process
173 );
174
175 PPEB
176 STDCALL PsGetProcessPeb(
177 PEPROCESS Process
178 );
179
180 ULONG
181 STDCALL PsGetProcessPriorityClass(
182 PEPROCESS Process
183 );
184
185 PVOID
186 STDCALL PsGetProcessSectionBaseAddress(
187 PEPROCESS Process
188 );
189
190 PVOID
191 STDCALL PsGetProcessSecurityPort(
192 PEPROCESS Process
193 );
194
195 HANDLE
196 STDCALL PsGetProcessSessionId(
197 PEPROCESS Process
198 );
199
200 PVOID
201 STDCALL PsGetProcessWin32Process(
202 PEPROCESS Process
203 );
204
205 PVOID
206 STDCALL PsGetProcessWin32WindowStation(
207 PEPROCESS Process
208 );
209
210 ULONG
211 STDCALL PsGetThreadFreezeCount(
212 struct _ETHREAD* Thread
213 );
214
215 BOOLEAN
216 STDCALL PsGetThreadHardErrorsAreDisabled(
217 struct _ETHREAD* Thread
218 );
219
220 HANDLE
221 STDCALL PsGetThreadId(
222 struct _ETHREAD* Thread
223 );
224
225 PEPROCESS
226 STDCALL PsGetThreadProcess(
227 struct _ETHREAD* Thread
228 );
229
230 HANDLE
231 STDCALL PsGetThreadProcessId(
232 struct _ETHREAD* Thread
233 );
234
235 HANDLE
236 STDCALL PsGetThreadSessionId(
237 struct _ETHREAD* Thread
238 );
239
240 PTEB
241 STDCALL PsGetThreadTeb(
242 struct _ETHREAD* Thread
243 );
244
245 PVOID
246 STDCALL PsGetThreadWin32Thread(
247 struct _ETHREAD* Thread
248 );
249
250 BOOLEAN
251 STDCALL PsIsProcessBeingDebugged(
252 PEPROCESS Process
253 );
254
255
256 BOOLEAN
257 STDCALL PsIsSystemThread(
258 struct _ETHREAD* Thread
259 );
260
261 BOOLEAN
262 STDCALL PsIsThreadImpersonating(
263 struct _ETHREAD* Thread
264 );
265
266 NTSTATUS
267 STDCALL PsRemoveCreateThreadNotifyRoutine (
268 IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine
269 );
270
271 NTSTATUS
272 STDCALL PsRemoveLoadImageNotifyRoutine(
273 IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine
274 );
275
276 VOID
277 STDCALL PsRestoreImpersonation(
278 IN struct _ETHREAD* Thread,
279 IN PSE_IMPERSONATION_STATE ImpersonationState
280 );
281
282 VOID
283 STDCALL PsReturnPoolQuota(
284 IN PEPROCESS Process,
285 IN POOL_TYPE PoolType,
286 IN ULONG_PTR Amount
287 );
288
289 VOID
290 STDCALL PsReturnProcessNonPagedPoolQuota(
291 IN PEPROCESS Process,
292 IN ULONG_PTR Amount
293 );
294
295 VOID
296 STDCALL PsReturnProcessPagedPoolQuota(
297 IN PEPROCESS Process,
298 IN ULONG_PTR Amount
299 );
300
301 VOID
302 STDCALL PsRevertToSelf(
303 VOID
304 );
305
306 VOID
307 STDCALL
308 PsRevertThreadToSelf(
309 IN struct _ETHREAD* Thread
310 );
311
312 VOID
313 STDCALL PsSetJobUIRestrictionsClass(
314 PEJOB Job,
315 ULONG UIRestrictionsClass
316 );
317
318 ULONG
319 STDCALL PsSetLegoNotifyRoutine(
320 PVOID LegoNotifyRoutine
321 );
322
323 VOID
324 STDCALL PsSetProcessPriorityClass(
325 PEPROCESS Process,
326 ULONG PriorityClass
327 );
328
329 VOID
330 STDCALL PsSetProcessSecurityPort(
331 PEPROCESS Process,
332 PVOID SecurityPort
333 );
334
335 VOID
336 STDCALL PsSetProcessWin32Process(
337 PEPROCESS Process,
338 PVOID Win32Process
339 );
340
341 VOID
342 STDCALL PsSetProcessWin32WindowStation(
343 PEPROCESS Process,
344 PVOID WindowStation
345 );
346
347 VOID
348 STDCALL PsSetThreadHardErrorsAreDisabled(
349 struct _ETHREAD* Thread,
350 BOOLEAN HardErrorsAreDisabled
351 );
352
353 VOID
354 STDCALL PsSetThreadWin32Thread(
355 struct _ETHREAD* Thread,
356 PVOID Win32Thread
357 );
358
359
360 VOID STDCALL
361 STDCALL PsEstablishWin32Callouts (PW32_PROCESS_CALLBACK W32ProcessCallback,
362 PW32_THREAD_CALLBACK W32ThreadCallback,
363 PVOID Param3,
364 PVOID Param4,
365 ULONG W32ThreadSize,
366 ULONG W32ProcessSize);
367
368 #define PsGetCurrentProcess() IoGetCurrentProcess()
369 #define PsGetCurrentThread() ((struct _ETHREAD*) (KeGetCurrentThread()))
370
371 PACCESS_TOKEN STDCALL
372 PsReferenceImpersonationToken (IN struct _ETHREAD *Thread,
373 OUT PBOOLEAN CopyOnOpen,
374 OUT PBOOLEAN EffectiveOnly,
375 OUT PSECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
376
377 PACCESS_TOKEN STDCALL
378 PsReferencePrimaryToken (struct _EPROCESS* Process);
379
380 VOID STDCALL
381 PsImpersonateClient (IN struct _ETHREAD* Thread,
382 IN PACCESS_TOKEN Token,
383 IN BOOLEAN CopyOnOpen,
384 IN BOOLEAN EffectiveOnly,
385 IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
386
387 VOID STDCALL
388 PsRevertToSelf (VOID);
389
390 BOOLEAN STDCALL PsGetVersion (PULONG MajorVersion OPTIONAL,
391 PULONG MinorVersion OPTIONAL,
392 PULONG BuildNumber OPTIONAL,
393 PUNICODE_STRING CSDVersion OPTIONAL);
394
395 LARGE_INTEGER STDCALL PsGetProcessExitTime(VOID);
396 BOOLEAN STDCALL PsIsThreadTerminating(struct _ETHREAD* Thread);
397
398 NTSTATUS STDCALL PsLookupProcessByProcessId(IN PVOID ProcessId,
399 OUT PEPROCESS *Process);
400
401 NTSTATUS STDCALL PsLookupProcessThreadByCid(IN PCLIENT_ID Cid,
402 OUT PEPROCESS *Process OPTIONAL,
403 OUT struct _ETHREAD **Thread);
404 /* OUT PETHREAD *Thread); */
405
406 NTSTATUS STDCALL PsLookupThreadByThreadId(IN PVOID ThreadId,
407 OUT struct _ETHREAD **Thread);
408 /* OUT PETHREAD *Thread); */
409
410 NTSTATUS STDCALL
411 PsSetCreateProcessNotifyRoutine(IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
412 IN BOOLEAN Remove);
413
414 NTSTATUS STDCALL
415 PsSetCreateThreadNotifyRoutine(IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
416
417 #endif
418
419 /* EOF */