[CMAKE]
[reactos.git] / include / ndk / psfuncs.h
1 /*++ NDK Version: 0098
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 (alexi@tinykrnl.org) - Updated - 27-Feb-2006
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 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32 #ifndef NTOS_MODE_USER
33
34 //
35 // Win32K Process/Thread Functions
36 //
37 NTKERNELAPI
38 PVOID
39 NTAPI
40 PsGetCurrentThreadWin32Thread(
41 VOID
42 );
43
44 NTKERNELAPI
45 PVOID
46 NTAPI
47 PsGetCurrentProcessWin32Process(
48 VOID
49 );
50
51 NTKERNELAPI
52 PVOID
53 NTAPI
54 PsGetProcessWin32Process(
55 PEPROCESS Process
56 );
57
58 NTKERNELAPI
59 VOID
60 NTAPI
61 PsSetProcessWin32Process(
62 PEPROCESS Process,
63 PVOID Win32Process
64 );
65
66 NTKERNELAPI
67 VOID
68 NTAPI
69 PsSetThreadWin32Thread(
70 PETHREAD Thread,
71 PVOID Win32Thread
72 );
73
74 NTKERNELAPI
75 PVOID
76 NTAPI
77 PsGetThreadWin32Thread(
78 PETHREAD Thread
79 );
80
81 NTKERNELAPI
82 PTEB
83 NTAPI
84 PsGetThreadTeb(
85 IN PETHREAD Thread
86 );
87
88 NTKERNELAPI
89 HANDLE
90 NTAPI
91 PsGetThreadId(
92 IN PETHREAD Thread
93 );
94
95 NTKERNELAPI
96 BOOLEAN
97 NTAPI
98 PsGetThreadHardErrorsAreDisabled(
99 PETHREAD Thread
100 );
101
102 NTKERNELAPI
103 VOID
104 NTAPI
105 PsSetThreadHardErrorsAreDisabled(
106 PETHREAD Thread,
107 IN BOOLEAN Disabled
108 );
109
110 NTKERNELAPI
111 VOID
112 NTAPI
113 PsEstablishWin32Callouts(
114 PWIN32_CALLOUTS_FPNS CalloutData
115 );
116
117 NTKERNELAPI
118 VOID
119 NTAPI
120 PsReturnProcessNonPagedPoolQuota(
121 IN PEPROCESS Process,
122 IN SIZE_T Amount
123 );
124
125 //
126 // Process Impersonation Functions
127 //
128 NTKERNELAPI
129 VOID
130 NTAPI
131 PsRevertThreadToSelf(
132 IN PETHREAD Thread
133 );
134
135 //
136 // Misc. Functions
137 //
138 NTKERNELAPI
139 NTSTATUS
140 NTAPI
141 PsLookupProcessThreadByCid(
142 IN PCLIENT_ID Cid,
143 OUT PEPROCESS *Process OPTIONAL,
144 OUT PETHREAD *Thread
145 );
146
147 BOOLEAN
148 NTAPI
149 PsIsProtectedProcess(
150 IN PEPROCESS Process
151 );
152
153 NTKERNELAPI
154 BOOLEAN
155 NTAPI
156 PsIsSystemProcess(
157 IN PEPROCESS Process
158 );
159
160 VOID
161 NTAPI
162 PsSetProcessPriorityByClass(
163 IN PEPROCESS Process,
164 IN PSPROCESSPRIORITYMODE Type
165 );
166
167 HANDLE
168 NTAPI
169 PsGetProcessInheritedFromUniqueProcessId(
170 IN PEPROCESS Process
171 );
172
173 //
174 // Quota Functions
175 //
176 NTKERNELAPI
177 VOID
178 NTAPI
179 PsChargePoolQuota(
180 IN PEPROCESS Process,
181 IN POOL_TYPE PoolType,
182 IN SIZE_T Amount
183 );
184
185 NTKERNELAPI
186 NTSTATUS
187 NTAPI
188 PsChargeProcessNonPagedPoolQuota(
189 IN PEPROCESS Process,
190 IN SIZE_T Amount
191 );
192
193 NTKERNELAPI
194 NTSTATUS
195 NTAPI
196 PsChargeProcessPagedPoolQuota(
197 IN PEPROCESS Process,
198 IN SIZE_T Amount
199 );
200
201 NTKERNELAPI
202 NTSTATUS
203 NTAPI
204 PsChargeProcessPoolQuota(
205 IN PEPROCESS Process,
206 IN POOL_TYPE PoolType,
207 IN SIZE_T Amount
208 );
209
210 NTKERNELAPI
211 VOID
212 NTAPI
213 PsReturnPoolQuota(
214 IN PEPROCESS Process,
215 IN POOL_TYPE PoolType,
216 IN SIZE_T Amount
217 );
218
219 NTKERNELAPI
220 VOID
221 NTAPI
222 PsReturnProcessNonPagedPoolQuota(
223 IN PEPROCESS Process,
224 IN SIZE_T Amount
225 );
226
227 NTKERNELAPI
228 VOID
229 NTAPI
230 PsReturnProcessPagedPoolQuota(
231 IN PEPROCESS Process,
232 IN SIZE_T Amount
233 );
234
235 #endif
236
237 //
238 // Native Calls
239 //
240 NTSYSCALLAPI
241 NTSTATUS
242 NTAPI
243 NtAlertResumeThread(
244 IN HANDLE ThreadHandle,
245 OUT PULONG SuspendCount
246 );
247
248 typedef ULONG APPHELPCACHESERVICECLASS;
249 NTSYSCALLAPI
250 NTSTATUS
251 NTAPI
252 NtApphelpCacheControl(
253 IN APPHELPCACHESERVICECLASS Service,
254 IN PVOID ServiceData
255 );
256
257 NTSYSCALLAPI
258 NTSTATUS
259 NTAPI
260 NtAlertThread(
261 IN HANDLE ThreadHandle
262 );
263
264 NTSYSCALLAPI
265 NTSTATUS
266 NTAPI
267 NtAssignProcessToJobObject(
268 HANDLE JobHandle,
269 HANDLE ProcessHandle
270 );
271
272 NTSYSCALLAPI
273 NTSTATUS
274 NTAPI
275 NtCreateJobObject(
276 PHANDLE JobHandle,
277 ACCESS_MASK DesiredAccess,
278 POBJECT_ATTRIBUTES ObjectAttributes
279 );
280
281 NTSTATUS
282 NTAPI
283 NtCreateJobSet(
284 IN ULONG NumJob,
285 IN PJOB_SET_ARRAY UserJobSet,
286 IN ULONG Flags
287 );
288
289 NTSYSCALLAPI
290 NTSTATUS
291 NTAPI
292 NtCreateProcess(
293 OUT PHANDLE ProcessHandle,
294 IN ACCESS_MASK DesiredAccess,
295 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
296 IN HANDLE ParentProcess,
297 IN BOOLEAN InheritObjectTable,
298 IN HANDLE SectionHandle OPTIONAL,
299 IN HANDLE DebugPort OPTIONAL,
300 IN HANDLE ExceptionPort OPTIONAL
301 );
302
303 NTSYSCALLAPI
304 NTSTATUS
305 NTAPI
306 NtCreateProcessEx(
307 OUT PHANDLE ProcessHandle,
308 IN ACCESS_MASK DesiredAccess,
309 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
310 IN HANDLE ParentProcess,
311 IN ULONG Flags,
312 IN HANDLE SectionHandle OPTIONAL,
313 IN HANDLE DebugPort OPTIONAL,
314 IN HANDLE ExceptionPort OPTIONAL,
315 IN BOOLEAN InJob
316 );
317
318 NTSYSCALLAPI
319 NTSTATUS
320 NTAPI
321 NtCreateThread(
322 OUT PHANDLE ThreadHandle,
323 IN ACCESS_MASK DesiredAccess,
324 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
325 IN HANDLE ProcessHandle,
326 OUT PCLIENT_ID ClientId,
327 IN PCONTEXT ThreadContext,
328 IN PINITIAL_TEB UserStack,
329 IN BOOLEAN CreateSuspended
330 );
331
332 #include "inline_ntcurrentteb.h"
333
334 NTSYSCALLAPI
335 NTSTATUS
336 NTAPI
337 NtImpersonateThread(
338 IN HANDLE ThreadHandle,
339 IN HANDLE ThreadToImpersonate,
340 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
341 );
342
343 NTSYSCALLAPI
344 NTSTATUS
345 NTAPI
346 NtIsProcessInJob(
347 IN HANDLE ProcessHandle,
348 IN HANDLE JobHandle OPTIONAL
349 );
350
351 NTSYSCALLAPI
352 NTSTATUS
353 NTAPI
354 NtOpenProcess(
355 OUT PHANDLE ProcessHandle,
356 IN ACCESS_MASK DesiredAccess,
357 IN POBJECT_ATTRIBUTES ObjectAttributes,
358 IN PCLIENT_ID ClientId
359 );
360
361 NTSYSCALLAPI
362 NTSTATUS
363 NTAPI
364 NtOpenThread(
365 OUT PHANDLE ThreadHandle,
366 IN ACCESS_MASK DesiredAccess,
367 IN POBJECT_ATTRIBUTES ObjectAttributes,
368 IN PCLIENT_ID ClientId
369 );
370
371 NTSYSCALLAPI
372 NTSTATUS
373 NTAPI
374 NtOpenThreadToken(
375 IN HANDLE ThreadHandle,
376 IN ACCESS_MASK DesiredAccess,
377 IN BOOLEAN OpenAsSelf,
378 OUT PHANDLE TokenHandle
379 );
380
381 NTSYSCALLAPI
382 NTSTATUS
383 NTAPI
384 NtOpenThreadTokenEx(
385 IN HANDLE ThreadHandle,
386 IN ACCESS_MASK DesiredAccess,
387 IN BOOLEAN OpenAsSelf,
388 IN ULONG HandleAttributes,
389 OUT PHANDLE TokenHandle
390 );
391
392 NTSYSCALLAPI
393 NTSTATUS
394 NTAPI
395 NtQueryInformationJobObject(
396 HANDLE JobHandle,
397 JOBOBJECTINFOCLASS JobInformationClass,
398 PVOID JobInformation,
399 ULONG JobInformationLength,
400 PULONG ReturnLength
401 );
402
403 #ifndef _NTDDK_
404 NTSYSCALLAPI
405 NTSTATUS
406 NTAPI
407 NtQueryInformationProcess(
408 IN HANDLE ProcessHandle,
409 IN PROCESSINFOCLASS ProcessInformationClass,
410 OUT PVOID ProcessInformation,
411 IN ULONG ProcessInformationLength,
412 OUT PULONG ReturnLength OPTIONAL
413 );
414 #endif
415
416 NTSYSCALLAPI
417 NTSTATUS
418 NTAPI
419 NtQueryInformationThread(
420 IN HANDLE ThreadHandle,
421 IN THREADINFOCLASS ThreadInformationClass,
422 OUT PVOID ThreadInformation,
423 IN ULONG ThreadInformationLength,
424 OUT PULONG ReturnLength
425 );
426
427 NTSYSCALLAPI
428 NTSTATUS
429 NTAPI
430 NtRegisterThreadTerminatePort(
431 HANDLE TerminationPort
432 );
433
434 NTSYSCALLAPI
435 NTSTATUS
436 NTAPI
437 NtResumeThread(
438 IN HANDLE ThreadHandle,
439 OUT PULONG SuspendCount
440 );
441
442 NTSYSCALLAPI
443 NTSTATUS
444 NTAPI
445 NtResumeProcess(
446 IN HANDLE ProcessHandle
447 );
448
449 NTSYSCALLAPI
450 NTSTATUS
451 NTAPI
452 NtSetInformationJobObject(
453 HANDLE JobHandle,
454 JOBOBJECTINFOCLASS JobInformationClass,
455 PVOID JobInformation,
456 ULONG JobInformationLength
457 );
458
459 NTSYSCALLAPI
460 NTSTATUS
461 NTAPI
462 NtSetInformationProcess(
463 IN HANDLE ProcessHandle,
464 IN PROCESSINFOCLASS ProcessInformationClass,
465 IN PVOID ProcessInformation,
466 IN ULONG ProcessInformationLength
467 );
468
469 NTSYSCALLAPI
470 NTSTATUS
471 NTAPI
472 NtSetInformationThread(
473 IN HANDLE ThreadHandle,
474 IN THREADINFOCLASS ThreadInformationClass,
475 IN PVOID ThreadInformation,
476 IN ULONG ThreadInformationLength
477 );
478
479 NTSYSCALLAPI
480 NTSTATUS
481 NTAPI
482 NtSuspendProcess(
483 IN HANDLE ProcessHandle
484 );
485
486 NTSYSCALLAPI
487 NTSTATUS
488 NTAPI
489 NtSuspendThread(
490 IN HANDLE ThreadHandle,
491 IN PULONG PreviousSuspendCount
492 );
493
494 NTSYSCALLAPI
495 NTSTATUS
496 NTAPI
497 NtTerminateProcess(
498 IN HANDLE ProcessHandle,
499 IN NTSTATUS ExitStatus
500 );
501
502 NTSYSCALLAPI
503 NTSTATUS
504 NTAPI
505 NtTerminateThread(
506 IN HANDLE ThreadHandle,
507 IN NTSTATUS ExitStatus
508 );
509
510 NTSYSCALLAPI
511 NTSTATUS
512 NTAPI
513 NtTerminateJobObject(
514 HANDLE JobHandle,
515 NTSTATUS ExitStatus
516 );
517
518 NTSYSAPI
519 NTSTATUS
520 NTAPI
521 ZwAlertResumeThread(
522 IN HANDLE ThreadHandle,
523 OUT PULONG SuspendCount
524 );
525
526 NTSYSAPI
527 NTSTATUS
528 NTAPI
529 ZwAlertThread(
530 IN HANDLE ThreadHandle
531 );
532
533 NTSYSAPI
534 NTSTATUS
535 NTAPI
536 ZwAssignProcessToJobObject(
537 HANDLE JobHandle,
538 HANDLE ProcessHandle
539 );
540
541 NTSYSAPI
542 NTSTATUS
543 NTAPI
544 ZwCreateJobObject(
545 PHANDLE JobHandle,
546 ACCESS_MASK DesiredAccess,
547 POBJECT_ATTRIBUTES ObjectAttributes
548 );
549
550 NTSYSAPI
551 NTSTATUS
552 NTAPI
553 ZwCreateProcess(
554 OUT PHANDLE ProcessHandle,
555 IN ACCESS_MASK DesiredAccess,
556 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
557 IN HANDLE ParentProcess,
558 IN BOOLEAN InheritObjectTable,
559 IN HANDLE SectionHandle OPTIONAL,
560 IN HANDLE DebugPort OPTIONAL,
561 IN HANDLE ExceptionPort OPTIONAL
562 );
563
564 NTSYSAPI
565 NTSTATUS
566 NTAPI
567 ZwCreateThread(
568 OUT PHANDLE ThreadHandle,
569 IN ACCESS_MASK DesiredAccess,
570 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
571 IN HANDLE ProcessHandle,
572 OUT PCLIENT_ID ClientId,
573 IN PCONTEXT ThreadContext,
574 IN PINITIAL_TEB UserStack,
575 IN BOOLEAN CreateSuspended
576 );
577
578 NTSYSAPI
579 NTSTATUS
580 NTAPI
581 ZwImpersonateThread(
582 IN HANDLE ThreadHandle,
583 IN HANDLE ThreadToImpersonate,
584 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
585 );
586
587 NTSYSAPI
588 NTSTATUS
589 NTAPI
590 ZwIsProcessInJob(
591 IN HANDLE ProcessHandle,
592 IN HANDLE JobHandle OPTIONAL
593 );
594
595 NTSYSAPI
596 NTSTATUS
597 NTAPI
598 ZwOpenProcess(
599 OUT PHANDLE ProcessHandle,
600 IN ACCESS_MASK DesiredAccess,
601 IN POBJECT_ATTRIBUTES ObjectAttributes,
602 IN PCLIENT_ID ClientId
603 );
604
605 NTSYSAPI
606 NTSTATUS
607 NTAPI
608 ZwOpenThread(
609 OUT PHANDLE ThreadHandle,
610 IN ACCESS_MASK DesiredAccess,
611 IN POBJECT_ATTRIBUTES ObjectAttributes,
612 IN PCLIENT_ID ClientId
613 );
614
615 NTSYSAPI
616 NTSTATUS
617 NTAPI
618 ZwOpenThreadToken(
619 IN HANDLE ThreadHandle,
620 IN ACCESS_MASK DesiredAccess,
621 IN BOOLEAN OpenAsSelf,
622 OUT PHANDLE TokenHandle
623 );
624
625 NTSYSAPI
626 NTSTATUS
627 NTAPI
628 ZwOpenThreadTokenEx(
629 IN HANDLE ThreadHandle,
630 IN ACCESS_MASK DesiredAccess,
631 IN BOOLEAN OpenAsSelf,
632 IN ULONG HandleAttributes,
633 OUT PHANDLE TokenHandle
634 );
635
636 NTSYSAPI
637 NTSTATUS
638 NTAPI
639 ZwQueryInformationJobObject(
640 HANDLE JobHandle,
641 JOBOBJECTINFOCLASS JobInformationClass,
642 PVOID JobInformation,
643 ULONG JobInformationLength,
644 PULONG ReturnLength
645 );
646
647 #ifndef _NTDDK_
648 NTSYSAPI
649 NTSTATUS
650 NTAPI
651 ZwQueryInformationProcess(
652 IN HANDLE ProcessHandle,
653 IN PROCESSINFOCLASS ProcessInformationClass,
654 OUT PVOID ProcessInformation,
655 IN ULONG ProcessInformationLength,
656 OUT PULONG ReturnLength OPTIONAL
657 );
658 #endif
659
660 NTSYSAPI
661 NTSTATUS
662 NTAPI
663 ZwQueryInformationThread(
664 IN HANDLE ThreadHandle,
665 IN THREADINFOCLASS ThreadInformationClass,
666 OUT PVOID ThreadInformation,
667 IN ULONG ThreadInformationLength,
668 OUT PULONG ReturnLength
669 );
670
671 NTSYSAPI
672 NTSTATUS
673 NTAPI
674 ZwRegisterThreadTerminatePort(
675 HANDLE TerminationPort
676 );
677
678 NTSYSAPI
679 NTSTATUS
680 NTAPI
681 ZwResumeThread(
682 IN HANDLE ThreadHandle,
683 OUT PULONG SuspendCount
684 );
685
686 NTSYSAPI
687 NTSTATUS
688 NTAPI
689 ZwResumeProcess(
690 IN HANDLE ProcessHandle
691 );
692
693 NTSYSAPI
694 NTSTATUS
695 NTAPI
696 ZwSetInformationJobObject(
697 HANDLE JobHandle,
698 JOBOBJECTINFOCLASS JobInformationClass,
699 PVOID JobInformation,
700 ULONG JobInformationLength
701 );
702
703 NTSYSAPI
704 NTSTATUS
705 NTAPI
706 ZwSetInformationProcess(
707 IN HANDLE ProcessHandle,
708 IN PROCESSINFOCLASS ProcessInformationClass,
709 IN PVOID ProcessInformation,
710 IN ULONG ProcessInformationLength
711 );
712
713 NTSYSAPI
714 NTSTATUS
715 NTAPI
716 ZwSetInformationThread(
717 IN HANDLE ThreadHandle,
718 IN THREADINFOCLASS ThreadInformationClass,
719 IN PVOID ThreadInformation,
720 IN ULONG ThreadInformationLength
721 );
722
723 NTSYSAPI
724 NTSTATUS
725 NTAPI
726 ZwSuspendProcess(
727 IN HANDLE ProcessHandle
728 );
729
730 NTSYSAPI
731 NTSTATUS
732 NTAPI
733 ZwSuspendThread(
734 IN HANDLE ThreadHandle,
735 IN PULONG PreviousSuspendCount
736 );
737
738 NTSYSAPI
739 NTSTATUS
740 NTAPI
741 ZwTerminateProcess(
742 IN HANDLE ProcessHandle,
743 IN NTSTATUS ExitStatus
744 );
745
746 NTSYSAPI
747 NTSTATUS
748 NTAPI
749 ZwTerminateThread(
750 IN HANDLE ThreadHandle,
751 IN NTSTATUS ExitStatus
752 );
753
754 NTSYSAPI
755 NTSTATUS
756 NTAPI
757 ZwTerminateJobObject(
758 HANDLE JobHandle,
759 NTSTATUS ExitStatus
760 );
761
762 #ifdef __cplusplus
763 }
764 #endif
765
766 #endif