3 Copyright (c) Alex Ionescu. All rights reserved.
11 Function definitions for the Process Manager
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
32 #ifndef NTOS_MODE_USER
35 // Win32K Process/Thread Functions
40 PsGetCurrentThreadWin32Thread(
47 PsGetCurrentProcessWin32Process(
54 PsGetProcessWin32Process(
61 PsSetProcessWin32Process(
69 PsSetThreadWin32Thread(
77 PsGetThreadWin32Thread(
84 PsGetProcessWin32WindowStation(
91 PsSetProcessWindowStation(
113 PsGetThreadHardErrorsAreDisabled(
120 PsSetThreadHardErrorsAreDisabled(
128 PsEstablishWin32Callouts(
129 PWIN32_CALLOUTS_FPNS CalloutData
135 PsReturnProcessNonPagedPoolQuota(
136 IN PEPROCESS Process
,
141 // Process Impersonation Functions
146 PsRevertThreadToSelf(
156 PsLookupProcessThreadByCid(
158 OUT PEPROCESS
*Process OPTIONAL
,
164 PsIsProtectedProcess(
177 PsSetProcessPriorityByClass(
178 IN PEPROCESS Process
,
179 IN PSPROCESSPRIORITYMODE Type
184 PsGetProcessInheritedFromUniqueProcessId(
191 PsGetProcessExitStatus(
202 IN PEPROCESS Process
,
203 IN POOL_TYPE PoolType
,
210 PsChargeProcessNonPagedPoolQuota(
211 IN PEPROCESS Process
,
218 PsChargeProcessPagedPoolQuota(
219 IN PEPROCESS Process
,
226 PsChargeProcessPoolQuota(
227 IN PEPROCESS Process
,
228 IN POOL_TYPE PoolType
,
236 IN PEPROCESS Process
,
237 IN POOL_TYPE PoolType
,
244 PsReturnProcessNonPagedPoolQuota(
245 IN PEPROCESS Process
,
252 PsReturnProcessPagedPoolQuota(
253 IN PEPROCESS Process
,
266 IN HANDLE ThreadHandle
,
267 OUT PULONG SuspendCount
270 typedef ULONG APPHELPCACHESERVICECLASS
;
274 NtApphelpCacheControl(
275 IN APPHELPCACHESERVICECLASS Service
,
283 IN HANDLE ThreadHandle
289 NtAssignProcessToJobObject(
299 ACCESS_MASK DesiredAccess
,
300 POBJECT_ATTRIBUTES ObjectAttributes
307 IN PJOB_SET_ARRAY UserJobSet
,
315 OUT PHANDLE ProcessHandle
,
316 IN ACCESS_MASK DesiredAccess
,
317 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
318 IN HANDLE ParentProcess
,
319 IN BOOLEAN InheritObjectTable
,
320 IN HANDLE SectionHandle OPTIONAL
,
321 IN HANDLE DebugPort OPTIONAL
,
322 IN HANDLE ExceptionPort OPTIONAL
329 OUT PHANDLE ProcessHandle
,
330 IN ACCESS_MASK DesiredAccess
,
331 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
332 IN HANDLE ParentProcess
,
334 IN HANDLE SectionHandle OPTIONAL
,
335 IN HANDLE DebugPort OPTIONAL
,
336 IN HANDLE ExceptionPort OPTIONAL
,
344 OUT PHANDLE ThreadHandle
,
345 IN ACCESS_MASK DesiredAccess
,
346 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
347 IN HANDLE ProcessHandle
,
348 OUT PCLIENT_ID ClientId
,
349 IN PCONTEXT ThreadContext
,
350 IN PINITIAL_TEB UserStack
,
351 IN BOOLEAN CreateSuspended
354 #include "inline_ntcurrentteb.h"
360 IN HANDLE ThreadHandle
,
361 IN HANDLE ThreadToImpersonate
,
362 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
369 IN HANDLE ProcessHandle
,
370 IN HANDLE JobHandle OPTIONAL
377 OUT PHANDLE ProcessHandle
,
378 IN ACCESS_MASK DesiredAccess
,
379 IN POBJECT_ATTRIBUTES ObjectAttributes
,
380 IN PCLIENT_ID ClientId
387 OUT PHANDLE ThreadHandle
,
388 IN ACCESS_MASK DesiredAccess
,
389 IN POBJECT_ATTRIBUTES ObjectAttributes
,
390 IN PCLIENT_ID ClientId
397 IN HANDLE ThreadHandle
,
398 IN ACCESS_MASK DesiredAccess
,
399 IN BOOLEAN OpenAsSelf
,
400 OUT PHANDLE TokenHandle
407 IN HANDLE ThreadHandle
,
408 IN ACCESS_MASK DesiredAccess
,
409 IN BOOLEAN OpenAsSelf
,
410 IN ULONG HandleAttributes
,
411 OUT PHANDLE TokenHandle
417 NtQueryInformationJobObject(
419 JOBOBJECTINFOCLASS JobInformationClass
,
420 PVOID JobInformation
,
421 ULONG JobInformationLength
,
429 NtQueryInformationProcess(
430 IN HANDLE ProcessHandle
,
431 IN PROCESSINFOCLASS ProcessInformationClass
,
432 OUT PVOID ProcessInformation
,
433 IN ULONG ProcessInformationLength
,
434 OUT PULONG ReturnLength OPTIONAL
441 NtQueryInformationThread(
442 IN HANDLE ThreadHandle
,
443 IN THREADINFOCLASS ThreadInformationClass
,
444 OUT PVOID ThreadInformation
,
445 IN ULONG ThreadInformationLength
,
446 OUT PULONG ReturnLength
452 NtRegisterThreadTerminatePort(
453 HANDLE TerminationPort
460 IN HANDLE ThreadHandle
,
461 OUT PULONG SuspendCount
468 IN HANDLE ProcessHandle
474 NtSetInformationJobObject(
476 JOBOBJECTINFOCLASS JobInformationClass
,
477 PVOID JobInformation
,
478 ULONG JobInformationLength
484 NtSetInformationProcess(
485 IN HANDLE ProcessHandle
,
486 IN PROCESSINFOCLASS ProcessInformationClass
,
487 IN PVOID ProcessInformation
,
488 IN ULONG ProcessInformationLength
494 NtSetInformationThread(
495 IN HANDLE ThreadHandle
,
496 IN THREADINFOCLASS ThreadInformationClass
,
497 IN PVOID ThreadInformation
,
498 IN ULONG ThreadInformationLength
505 IN HANDLE ProcessHandle
512 IN HANDLE ThreadHandle
,
513 IN PULONG PreviousSuspendCount
520 IN HANDLE ProcessHandle
,
521 IN NTSTATUS ExitStatus
528 IN HANDLE ThreadHandle
,
529 IN NTSTATUS ExitStatus
535 NtTerminateJobObject(
544 IN HANDLE ThreadHandle
,
545 OUT PULONG SuspendCount
552 IN HANDLE ThreadHandle
558 ZwAssignProcessToJobObject(
568 ACCESS_MASK DesiredAccess
,
569 POBJECT_ATTRIBUTES ObjectAttributes
576 OUT PHANDLE ProcessHandle
,
577 IN ACCESS_MASK DesiredAccess
,
578 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
579 IN HANDLE ParentProcess
,
580 IN BOOLEAN InheritObjectTable
,
581 IN HANDLE SectionHandle OPTIONAL
,
582 IN HANDLE DebugPort OPTIONAL
,
583 IN HANDLE ExceptionPort OPTIONAL
590 OUT PHANDLE ThreadHandle
,
591 IN ACCESS_MASK DesiredAccess
,
592 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
593 IN HANDLE ProcessHandle
,
594 OUT PCLIENT_ID ClientId
,
595 IN PCONTEXT ThreadContext
,
596 IN PINITIAL_TEB UserStack
,
597 IN BOOLEAN CreateSuspended
604 IN HANDLE ThreadHandle
,
605 IN HANDLE ThreadToImpersonate
,
606 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
613 IN HANDLE ProcessHandle
,
614 IN HANDLE JobHandle OPTIONAL
621 OUT PHANDLE ProcessHandle
,
622 IN ACCESS_MASK DesiredAccess
,
623 IN POBJECT_ATTRIBUTES ObjectAttributes
,
624 IN PCLIENT_ID ClientId
631 OUT PHANDLE ThreadHandle
,
632 IN ACCESS_MASK DesiredAccess
,
633 IN POBJECT_ATTRIBUTES ObjectAttributes
,
634 IN PCLIENT_ID ClientId
641 IN HANDLE ThreadHandle
,
642 IN ACCESS_MASK DesiredAccess
,
643 IN BOOLEAN OpenAsSelf
,
644 OUT PHANDLE TokenHandle
651 IN HANDLE ThreadHandle
,
652 IN ACCESS_MASK DesiredAccess
,
653 IN BOOLEAN OpenAsSelf
,
654 IN ULONG HandleAttributes
,
655 OUT PHANDLE TokenHandle
661 ZwQueryInformationJobObject(
663 JOBOBJECTINFOCLASS JobInformationClass
,
664 PVOID JobInformation
,
665 ULONG JobInformationLength
,
673 ZwQueryInformationProcess(
674 IN HANDLE ProcessHandle
,
675 IN PROCESSINFOCLASS ProcessInformationClass
,
676 OUT PVOID ProcessInformation
,
677 IN ULONG ProcessInformationLength
,
678 OUT PULONG ReturnLength OPTIONAL
685 ZwQueryInformationThread(
686 IN HANDLE ThreadHandle
,
687 IN THREADINFOCLASS ThreadInformationClass
,
688 OUT PVOID ThreadInformation
,
689 IN ULONG ThreadInformationLength
,
690 OUT PULONG ReturnLength
696 ZwRegisterThreadTerminatePort(
697 HANDLE TerminationPort
704 IN HANDLE ThreadHandle
,
705 OUT PULONG SuspendCount
712 IN HANDLE ProcessHandle
718 ZwSetInformationJobObject(
720 JOBOBJECTINFOCLASS JobInformationClass
,
721 PVOID JobInformation
,
722 ULONG JobInformationLength
728 ZwSetInformationProcess(
729 IN HANDLE ProcessHandle
,
730 IN PROCESSINFOCLASS ProcessInformationClass
,
731 IN PVOID ProcessInformation
,
732 IN ULONG ProcessInformationLength
738 ZwSetInformationThread(
739 IN HANDLE ThreadHandle
,
740 IN THREADINFOCLASS ThreadInformationClass
,
741 IN PVOID ThreadInformation
,
742 IN ULONG ThreadInformationLength
749 IN HANDLE ProcessHandle
756 IN HANDLE ThreadHandle
,
757 IN PULONG PreviousSuspendCount
764 IN HANDLE ProcessHandle
,
765 IN NTSTATUS ExitStatus
772 IN HANDLE ThreadHandle
,
773 IN NTSTATUS ExitStatus
779 ZwTerminateJobObject(