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