fdd0e400f22242f4df7961ad2174312c784267d9
[reactos.git] / reactos / include / ndk / psfuncs.h
1 /*++ NDK Version: 0095
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 psfuncs.h
8
9 Abstract:
10
11 Function definitions for the Process Manager
12
13 Author:
14
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
16
17 --*/
18
19 #ifndef _PSFUNCS_H
20 #define _PSFUNCS_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26 #include <pstypes.h>
27
28 #ifndef NTOS_MODE_USER
29
30 //
31 // Win32K Process/Thread Functions
32 //
33 struct _W32THREAD*
34 NTAPI
35 PsGetWin32Thread(
36 VOID
37 );
38
39 struct _W32PROCESS*
40 NTAPI
41 PsGetWin32Process(
42 VOID
43 );
44
45 PVOID
46 NTAPI
47 PsGetProcessWin32Process(
48 PEPROCESS Process
49 );
50
51 VOID
52 NTAPI
53 PsSetProcessWin32Process(
54 PEPROCESS Process,
55 PVOID Win32Process
56 );
57
58 VOID
59 NTAPI
60 PsSetThreadWin32Thread(
61 PETHREAD Thread,
62 PVOID Win32Thread
63 );
64
65 PVOID
66 NTAPI
67 PsGetThreadWin32Thread(
68 PETHREAD Thread
69 );
70
71 VOID
72 NTAPI
73 PsEstablishWin32Callouts(
74 PW32_CALLOUT_DATA CalloutData
75 );
76
77 VOID
78 NTAPI
79 PsReturnProcessNonPagedPoolQuota(
80 IN PEPROCESS Process,
81 IN ULONG_PTR Amount
82 );
83
84 //
85 // Process Impersonation Functions
86 //
87 VOID
88 NTAPI
89 PsRevertThreadToSelf(
90 IN PETHREAD Thread
91 );
92
93 //
94 // Misc. Functions
95 //
96 HANDLE
97 NTAPI
98 PsGetProcessId(PEPROCESS Process);
99
100 #endif
101
102 //
103 // Native Calls
104 //
105 NTSYSCALLAPI
106 NTSTATUS
107 NTAPI
108 NtAlertResumeThread(
109 IN HANDLE ThreadHandle,
110 OUT PULONG SuspendCount
111 );
112
113 NTSYSCALLAPI
114 NTSTATUS
115 NTAPI
116 NtAlertThread(
117 IN HANDLE ThreadHandle
118 );
119
120 NTSYSCALLAPI
121 NTSTATUS
122 NTAPI
123 NtAssignProcessToJobObject(
124 HANDLE JobHandle,
125 HANDLE ProcessHandle
126 );
127
128 NTSYSCALLAPI
129 NTSTATUS
130 NTAPI
131 NtCreateJobObject(
132 PHANDLE JobHandle,
133 ACCESS_MASK DesiredAccess,
134 POBJECT_ATTRIBUTES ObjectAttributes
135 );
136
137 NTSYSCALLAPI
138 NTSTATUS
139 NTAPI
140 NtCreateProcess(
141 OUT PHANDLE ProcessHandle,
142 IN ACCESS_MASK DesiredAccess,
143 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
144 IN HANDLE ParentProcess,
145 IN BOOLEAN InheritObjectTable,
146 IN HANDLE SectionHandle OPTIONAL,
147 IN HANDLE DebugPort OPTIONAL,
148 IN HANDLE ExceptionPort OPTIONAL
149 );
150
151 NTSYSCALLAPI
152 NTSTATUS
153 NTAPI
154 NtCreateThread(
155 OUT PHANDLE ThreadHandle,
156 IN ACCESS_MASK DesiredAccess,
157 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
158 IN HANDLE ProcessHandle,
159 OUT PCLIENT_ID ClientId,
160 IN PCONTEXT ThreadContext,
161 IN PINITIAL_TEB UserStack,
162 IN BOOLEAN CreateSuspended
163 );
164
165 NTSYSCALLAPI
166 NTSTATUS
167 NTAPI
168 NtImpersonateThread(
169 IN HANDLE ThreadHandle,
170 IN HANDLE ThreadToImpersonate,
171 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
172 );
173
174 NTSYSCALLAPI
175 NTSTATUS
176 NTAPI
177 NtIsProcessInJob(
178 IN HANDLE ProcessHandle,
179 IN HANDLE JobHandle OPTIONAL
180 );
181
182 NTSYSCALLAPI
183 NTSTATUS
184 NTAPI
185 NtOpenProcess(
186 OUT PHANDLE ProcessHandle,
187 IN ACCESS_MASK DesiredAccess,
188 IN POBJECT_ATTRIBUTES ObjectAttributes,
189 IN PCLIENT_ID ClientId
190 );
191
192 NTSYSCALLAPI
193 NTSTATUS
194 NTAPI
195 NtOpenThread(
196 OUT PHANDLE ThreadHandle,
197 IN ACCESS_MASK DesiredAccess,
198 IN POBJECT_ATTRIBUTES ObjectAttributes,
199 IN PCLIENT_ID ClientId
200 );
201
202 NTSYSCALLAPI
203 NTSTATUS
204 NTAPI
205 NtOpenThreadToken(
206 IN HANDLE ThreadHandle,
207 IN ACCESS_MASK DesiredAccess,
208 IN BOOLEAN OpenAsSelf,
209 OUT PHANDLE TokenHandle
210 );
211
212 NTSYSCALLAPI
213 NTSTATUS
214 NTAPI
215 NtOpenThreadTokenEx(
216 IN HANDLE ThreadHandle,
217 IN ACCESS_MASK DesiredAccess,
218 IN BOOLEAN OpenAsSelf,
219 IN ULONG HandleAttributes,
220 OUT PHANDLE TokenHandle
221 );
222
223 NTSYSCALLAPI
224 NTSTATUS
225 NTAPI
226 NtQueryInformationJobObject(
227 HANDLE JobHandle,
228 JOBOBJECTINFOCLASS JobInformationClass,
229 PVOID JobInformation,
230 ULONG JobInformationLength,
231 PULONG ReturnLength
232 );
233
234 #ifndef _NTDDK_
235 NTSYSCALLAPI
236 NTSTATUS
237 NTAPI
238 NtQueryInformationProcess(
239 IN HANDLE ProcessHandle,
240 IN PROCESSINFOCLASS ProcessInformationClass,
241 OUT PVOID ProcessInformation,
242 IN ULONG ProcessInformationLength,
243 OUT PULONG ReturnLength OPTIONAL
244 );
245 #endif
246
247 NTSYSCALLAPI
248 NTSTATUS
249 NTAPI
250 NtQueryInformationThread(
251 IN HANDLE ThreadHandle,
252 IN THREADINFOCLASS ThreadInformationClass,
253 OUT PVOID ThreadInformation,
254 IN ULONG ThreadInformationLength,
255 OUT PULONG ReturnLength
256 );
257
258 NTSYSCALLAPI
259 NTSTATUS
260 NTAPI
261 NtRegisterThreadTerminatePort(
262 HANDLE TerminationPort
263 );
264
265 NTSYSCALLAPI
266 NTSTATUS
267 NTAPI
268 NtResumeThread(
269 IN HANDLE ThreadHandle,
270 OUT PULONG SuspendCount
271 );
272
273 NTSYSCALLAPI
274 NTSTATUS
275 NTAPI
276 NtResumeProcess(
277 IN HANDLE ProcessHandle
278 );
279
280 NTSYSCALLAPI
281 NTSTATUS
282 NTAPI
283 NtSetInformationJobObject(
284 HANDLE JobHandle,
285 JOBOBJECTINFOCLASS JobInformationClass,
286 PVOID JobInformation,
287 ULONG JobInformationLength
288 );
289
290 NTSYSCALLAPI
291 NTSTATUS
292 NTAPI
293 NtSetInformationProcess(
294 IN HANDLE ProcessHandle,
295 IN PROCESSINFOCLASS ProcessInformationClass,
296 IN PVOID ProcessInformation,
297 IN ULONG ProcessInformationLength
298 );
299
300 NTSYSCALLAPI
301 NTSTATUS
302 NTAPI
303 NtSetInformationThread(
304 IN HANDLE ThreadHandle,
305 IN THREADINFOCLASS ThreadInformationClass,
306 IN PVOID ThreadInformation,
307 IN ULONG ThreadInformationLength
308 );
309
310 NTSYSCALLAPI
311 NTSTATUS
312 NTAPI
313 NtSuspendProcess(
314 IN HANDLE ProcessHandle
315 );
316
317 NTSTATUS
318 NTAPI
319 NtSuspendThread(
320 IN HANDLE ThreadHandle,
321 IN PULONG PreviousSuspendCount
322 );
323
324 NTSYSCALLAPI
325 NTSTATUS
326 NTAPI
327 NtTerminateProcess(
328 IN HANDLE ProcessHandle,
329 IN NTSTATUS ExitStatus
330 );
331
332 NTSYSCALLAPI
333 NTSTATUS
334 NTAPI
335 NtTerminateThread(
336 IN HANDLE ThreadHandle,
337 IN NTSTATUS ExitStatus
338 );
339
340 NTSYSCALLAPI
341 NTSTATUS
342 NTAPI
343 NtTerminateJobObject(
344 HANDLE JobHandle,
345 NTSTATUS ExitStatus
346 );
347
348 NTSYSAPI
349 NTSTATUS
350 NTAPI
351 ZwAlertResumeThread(
352 IN HANDLE ThreadHandle,
353 OUT PULONG SuspendCount
354 );
355
356 NTSYSAPI
357 NTSTATUS
358 NTAPI
359 ZwAlertThread(
360 IN HANDLE ThreadHandle
361 );
362
363 NTSYSAPI
364 NTSTATUS
365 NTAPI
366 ZwAssignProcessToJobObject(
367 HANDLE JobHandle,
368 HANDLE ProcessHandle
369 );
370
371 NTSYSAPI
372 NTSTATUS
373 NTAPI
374 ZwCreateJobObject(
375 PHANDLE JobHandle,
376 ACCESS_MASK DesiredAccess,
377 POBJECT_ATTRIBUTES ObjectAttributes
378 );
379
380 NTSYSAPI
381 NTSTATUS
382 NTAPI
383 ZwCreateProcess(
384 OUT PHANDLE ProcessHandle,
385 IN ACCESS_MASK DesiredAccess,
386 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
387 IN HANDLE ParentProcess,
388 IN BOOLEAN InheritObjectTable,
389 IN HANDLE SectionHandle OPTIONAL,
390 IN HANDLE DebugPort OPTIONAL,
391 IN HANDLE ExceptionPort OPTIONAL
392 );
393
394 NTSYSAPI
395 NTSTATUS
396 NTAPI
397 ZwCreateThread(
398 OUT PHANDLE ThreadHandle,
399 IN ACCESS_MASK DesiredAccess,
400 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
401 IN HANDLE ProcessHandle,
402 OUT PCLIENT_ID ClientId,
403 IN PCONTEXT ThreadContext,
404 IN PINITIAL_TEB UserStack,
405 IN BOOLEAN CreateSuspended
406 );
407
408 NTSYSAPI
409 NTSTATUS
410 NTAPI
411 ZwImpersonateThread(
412 IN HANDLE ThreadHandle,
413 IN HANDLE ThreadToImpersonate,
414 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
415 );
416
417 NTSYSAPI
418 NTSTATUS
419 NTAPI
420 ZwIsProcessInJob(
421 IN HANDLE ProcessHandle,
422 IN HANDLE JobHandle OPTIONAL
423 );
424
425 NTSYSAPI
426 NTSTATUS
427 NTAPI
428 ZwOpenProcess(
429 OUT PHANDLE ProcessHandle,
430 IN ACCESS_MASK DesiredAccess,
431 IN POBJECT_ATTRIBUTES ObjectAttributes,
432 IN PCLIENT_ID ClientId
433 );
434
435 NTSYSAPI
436 NTSTATUS
437 NTAPI
438 ZwOpenThread(
439 OUT PHANDLE ThreadHandle,
440 IN ACCESS_MASK DesiredAccess,
441 IN POBJECT_ATTRIBUTES ObjectAttributes,
442 IN PCLIENT_ID ClientId
443 );
444
445 NTSYSAPI
446 NTSTATUS
447 NTAPI
448 ZwOpenThreadToken(
449 IN HANDLE ThreadHandle,
450 IN ACCESS_MASK DesiredAccess,
451 IN BOOLEAN OpenAsSelf,
452 OUT PHANDLE TokenHandle
453 );
454
455 NTSYSAPI
456 NTSTATUS
457 NTAPI
458 ZwOpenThreadTokenEx(
459 IN HANDLE ThreadHandle,
460 IN ACCESS_MASK DesiredAccess,
461 IN BOOLEAN OpenAsSelf,
462 IN ULONG HandleAttributes,
463 OUT PHANDLE TokenHandle
464 );
465
466 NTSYSAPI
467 NTSTATUS
468 NTAPI
469 ZwQueryInformationJobObject(
470 HANDLE JobHandle,
471 JOBOBJECTINFOCLASS JobInformationClass,
472 PVOID JobInformation,
473 ULONG JobInformationLength,
474 PULONG ReturnLength
475 );
476
477 #ifndef _NTDDK_
478 NTSYSAPI
479 NTSTATUS
480 NTAPI
481 ZwQueryInformationProcess(
482 IN HANDLE ProcessHandle,
483 IN PROCESSINFOCLASS ProcessInformationClass,
484 OUT PVOID ProcessInformation,
485 IN ULONG ProcessInformationLength,
486 OUT PULONG ReturnLength OPTIONAL
487 );
488 #endif
489
490 NTSYSAPI
491 NTSTATUS
492 NTAPI
493 ZwQueryInformationThread(
494 IN HANDLE ThreadHandle,
495 IN THREADINFOCLASS ThreadInformationClass,
496 OUT PVOID ThreadInformation,
497 IN ULONG ThreadInformationLength,
498 OUT PULONG ReturnLength
499 );
500
501 NTSYSAPI
502 NTSTATUS
503 NTAPI
504 ZwRegisterThreadTerminatePort(
505 HANDLE TerminationPort
506 );
507
508 NTSYSAPI
509 NTSTATUS
510 NTAPI
511 ZwResumeThread(
512 IN HANDLE ThreadHandle,
513 OUT PULONG SuspendCount
514 );
515
516 NTSYSAPI
517 NTSTATUS
518 NTAPI
519 ZwResumeProcess(
520 IN HANDLE ProcessHandle
521 );
522
523 NTSYSAPI
524 NTSTATUS
525 NTAPI
526 ZwSetInformationJobObject(
527 HANDLE JobHandle,
528 JOBOBJECTINFOCLASS JobInformationClass,
529 PVOID JobInformation,
530 ULONG JobInformationLength
531 );
532
533 NTSYSAPI
534 NTSTATUS
535 NTAPI
536 ZwSetInformationProcess(
537 IN HANDLE ProcessHandle,
538 IN PROCESSINFOCLASS ProcessInformationClass,
539 IN PVOID ProcessInformation,
540 IN ULONG ProcessInformationLength
541 );
542
543 NTSYSAPI
544 NTSTATUS
545 NTAPI
546 ZwSetInformationThread(
547 IN HANDLE ThreadHandle,
548 IN THREADINFOCLASS ThreadInformationClass,
549 IN PVOID ThreadInformation,
550 IN ULONG ThreadInformationLength
551 );
552
553 NTSYSAPI
554 NTSTATUS
555 NTAPI
556 ZwSuspendProcess(
557 IN HANDLE ProcessHandle
558 );
559
560 NTSYSAPI
561 NTSTATUS
562 NTAPI
563 ZwSuspendThread(
564 IN HANDLE ThreadHandle,
565 IN PULONG PreviousSuspendCount
566 );
567
568 NTSYSAPI
569 NTSTATUS
570 NTAPI
571 ZwTerminateProcess(
572 IN HANDLE ProcessHandle,
573 IN NTSTATUS ExitStatus
574 );
575
576 NTSYSAPI
577 NTSTATUS
578 NTAPI
579 ZwTerminateThread(
580 IN HANDLE ThreadHandle,
581 IN NTSTATUS ExitStatus
582 );
583
584 NTSYSAPI
585 NTSTATUS
586 NTAPI
587 ZwTerminateJobObject(
588 HANDLE JobHandle,
589 NTSTATUS ExitStatus
590 );
591
592 #endif