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(
98 PsGetThreadHardErrorsAreDisabled(
105 PsSetThreadHardErrorsAreDisabled(
113 PsEstablishWin32Callouts(
114 PWIN32_CALLOUTS_FPNS CalloutData
120 PsReturnProcessNonPagedPoolQuota(
121 IN PEPROCESS Process
,
126 // Process Impersonation Functions
131 PsRevertThreadToSelf(
141 PsLookupProcessThreadByCid(
143 OUT PEPROCESS
*Process OPTIONAL
,
149 PsIsProtectedProcess(
162 PsSetProcessPriorityByClass(
163 IN PEPROCESS Process
,
164 IN PSPROCESSPRIORITYMODE Type
169 PsGetProcessInheritedFromUniqueProcessId(
180 IN PEPROCESS Process
,
181 IN POOL_TYPE PoolType
,
188 PsChargeProcessNonPagedPoolQuota(
189 IN PEPROCESS Process
,
196 PsChargeProcessPagedPoolQuota(
197 IN PEPROCESS Process
,
204 PsChargeProcessPoolQuota(
205 IN PEPROCESS Process
,
206 IN POOL_TYPE PoolType
,
214 IN PEPROCESS Process
,
215 IN POOL_TYPE PoolType
,
222 PsReturnProcessNonPagedPoolQuota(
223 IN PEPROCESS Process
,
230 PsReturnProcessPagedPoolQuota(
231 IN PEPROCESS Process
,
244 IN HANDLE ThreadHandle
,
245 OUT PULONG SuspendCount
248 typedef ULONG APPHELPCACHESERVICECLASS
;
252 NtApphelpCacheControl(
253 IN APPHELPCACHESERVICECLASS Service
,
261 IN HANDLE ThreadHandle
267 NtAssignProcessToJobObject(
277 ACCESS_MASK DesiredAccess
,
278 POBJECT_ATTRIBUTES ObjectAttributes
285 IN PJOB_SET_ARRAY UserJobSet
,
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
307 OUT PHANDLE ProcessHandle
,
308 IN ACCESS_MASK DesiredAccess
,
309 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
310 IN HANDLE ParentProcess
,
312 IN HANDLE SectionHandle OPTIONAL
,
313 IN HANDLE DebugPort OPTIONAL
,
314 IN HANDLE ExceptionPort OPTIONAL
,
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
332 #include "inline_ntcurrentteb.h"
338 IN HANDLE ThreadHandle
,
339 IN HANDLE ThreadToImpersonate
,
340 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
347 IN HANDLE ProcessHandle
,
348 IN HANDLE JobHandle OPTIONAL
355 OUT PHANDLE ProcessHandle
,
356 IN ACCESS_MASK DesiredAccess
,
357 IN POBJECT_ATTRIBUTES ObjectAttributes
,
358 IN PCLIENT_ID ClientId
365 OUT PHANDLE ThreadHandle
,
366 IN ACCESS_MASK DesiredAccess
,
367 IN POBJECT_ATTRIBUTES ObjectAttributes
,
368 IN PCLIENT_ID ClientId
375 IN HANDLE ThreadHandle
,
376 IN ACCESS_MASK DesiredAccess
,
377 IN BOOLEAN OpenAsSelf
,
378 OUT PHANDLE TokenHandle
385 IN HANDLE ThreadHandle
,
386 IN ACCESS_MASK DesiredAccess
,
387 IN BOOLEAN OpenAsSelf
,
388 IN ULONG HandleAttributes
,
389 OUT PHANDLE TokenHandle
395 NtQueryInformationJobObject(
397 JOBOBJECTINFOCLASS JobInformationClass
,
398 PVOID JobInformation
,
399 ULONG JobInformationLength
,
407 NtQueryInformationProcess(
408 IN HANDLE ProcessHandle
,
409 IN PROCESSINFOCLASS ProcessInformationClass
,
410 OUT PVOID ProcessInformation
,
411 IN ULONG ProcessInformationLength
,
412 OUT PULONG ReturnLength OPTIONAL
419 NtQueryInformationThread(
420 IN HANDLE ThreadHandle
,
421 IN THREADINFOCLASS ThreadInformationClass
,
422 OUT PVOID ThreadInformation
,
423 IN ULONG ThreadInformationLength
,
424 OUT PULONG ReturnLength
430 NtRegisterThreadTerminatePort(
431 HANDLE TerminationPort
438 IN HANDLE ThreadHandle
,
439 OUT PULONG SuspendCount
446 IN HANDLE ProcessHandle
452 NtSetInformationJobObject(
454 JOBOBJECTINFOCLASS JobInformationClass
,
455 PVOID JobInformation
,
456 ULONG JobInformationLength
462 NtSetInformationProcess(
463 IN HANDLE ProcessHandle
,
464 IN PROCESSINFOCLASS ProcessInformationClass
,
465 IN PVOID ProcessInformation
,
466 IN ULONG ProcessInformationLength
472 NtSetInformationThread(
473 IN HANDLE ThreadHandle
,
474 IN THREADINFOCLASS ThreadInformationClass
,
475 IN PVOID ThreadInformation
,
476 IN ULONG ThreadInformationLength
483 IN HANDLE ProcessHandle
490 IN HANDLE ThreadHandle
,
491 IN PULONG PreviousSuspendCount
498 IN HANDLE ProcessHandle
,
499 IN NTSTATUS ExitStatus
506 IN HANDLE ThreadHandle
,
507 IN NTSTATUS ExitStatus
513 NtTerminateJobObject(
522 IN HANDLE ThreadHandle
,
523 OUT PULONG SuspendCount
530 IN HANDLE ThreadHandle
536 ZwAssignProcessToJobObject(
546 ACCESS_MASK DesiredAccess
,
547 POBJECT_ATTRIBUTES ObjectAttributes
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
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
582 IN HANDLE ThreadHandle
,
583 IN HANDLE ThreadToImpersonate
,
584 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
591 IN HANDLE ProcessHandle
,
592 IN HANDLE JobHandle OPTIONAL
599 OUT PHANDLE ProcessHandle
,
600 IN ACCESS_MASK DesiredAccess
,
601 IN POBJECT_ATTRIBUTES ObjectAttributes
,
602 IN PCLIENT_ID ClientId
609 OUT PHANDLE ThreadHandle
,
610 IN ACCESS_MASK DesiredAccess
,
611 IN POBJECT_ATTRIBUTES ObjectAttributes
,
612 IN PCLIENT_ID ClientId
619 IN HANDLE ThreadHandle
,
620 IN ACCESS_MASK DesiredAccess
,
621 IN BOOLEAN OpenAsSelf
,
622 OUT PHANDLE TokenHandle
629 IN HANDLE ThreadHandle
,
630 IN ACCESS_MASK DesiredAccess
,
631 IN BOOLEAN OpenAsSelf
,
632 IN ULONG HandleAttributes
,
633 OUT PHANDLE TokenHandle
639 ZwQueryInformationJobObject(
641 JOBOBJECTINFOCLASS JobInformationClass
,
642 PVOID JobInformation
,
643 ULONG JobInformationLength
,
651 ZwQueryInformationProcess(
652 IN HANDLE ProcessHandle
,
653 IN PROCESSINFOCLASS ProcessInformationClass
,
654 OUT PVOID ProcessInformation
,
655 IN ULONG ProcessInformationLength
,
656 OUT PULONG ReturnLength OPTIONAL
663 ZwQueryInformationThread(
664 IN HANDLE ThreadHandle
,
665 IN THREADINFOCLASS ThreadInformationClass
,
666 OUT PVOID ThreadInformation
,
667 IN ULONG ThreadInformationLength
,
668 OUT PULONG ReturnLength
674 ZwRegisterThreadTerminatePort(
675 HANDLE TerminationPort
682 IN HANDLE ThreadHandle
,
683 OUT PULONG SuspendCount
690 IN HANDLE ProcessHandle
696 ZwSetInformationJobObject(
698 JOBOBJECTINFOCLASS JobInformationClass
,
699 PVOID JobInformation
,
700 ULONG JobInformationLength
706 ZwSetInformationProcess(
707 IN HANDLE ProcessHandle
,
708 IN PROCESSINFOCLASS ProcessInformationClass
,
709 IN PVOID ProcessInformation
,
710 IN ULONG ProcessInformationLength
716 ZwSetInformationThread(
717 IN HANDLE ThreadHandle
,
718 IN THREADINFOCLASS ThreadInformationClass
,
719 IN PVOID ThreadInformation
,
720 IN ULONG ThreadInformationLength
727 IN HANDLE ProcessHandle
734 IN HANDLE ThreadHandle
,
735 IN PULONG PreviousSuspendCount
742 IN HANDLE ProcessHandle
,
743 IN NTSTATUS ExitStatus
750 IN HANDLE ThreadHandle
,
751 IN NTSTATUS ExitStatus
757 ZwTerminateJobObject(