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