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