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 PsGetThreadHardErrorsAreDisabled(
91 PsSetThreadHardErrorsAreDisabled(
99 PsEstablishWin32Callouts(
100 PWIN32_CALLOUTS_FPNS CalloutData
106 PsReturnProcessNonPagedPoolQuota(
107 IN PEPROCESS Process
,
112 // Process Impersonation Functions
117 PsRevertThreadToSelf(
127 PsLookupProcessThreadByCid(
129 OUT PEPROCESS
*Process OPTIONAL
,
135 PsIsProtectedProcess(
146 IN PEPROCESS Process
,
147 IN POOL_TYPE PoolType
,
154 PsChargeProcessNonPagedPoolQuota(
155 IN PEPROCESS Process
,
162 PsChargeProcessPagedPoolQuota(
163 IN PEPROCESS Process
,
170 PsChargeProcessPoolQuota(
171 IN PEPROCESS Process
,
172 IN POOL_TYPE PoolType
,
180 IN PEPROCESS Process
,
181 IN POOL_TYPE PoolType
,
188 PsReturnProcessNonPagedPoolQuota(
189 IN PEPROCESS Process
,
196 PsReturnProcessPagedPoolQuota(
197 IN PEPROCESS Process
,
210 IN HANDLE ThreadHandle
,
211 OUT PULONG SuspendCount
214 typedef ULONG APPHELPCACHESERVICECLASS
;
218 NtApphelpCacheControl(
219 IN APPHELPCACHESERVICECLASS Service
,
227 IN HANDLE ThreadHandle
233 NtAssignProcessToJobObject(
243 ACCESS_MASK DesiredAccess
,
244 POBJECT_ATTRIBUTES ObjectAttributes
251 IN PJOB_SET_ARRAY UserJobSet
,
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
273 OUT PHANDLE ProcessHandle
,
274 IN ACCESS_MASK DesiredAccess
,
275 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
276 IN HANDLE ParentProcess
,
278 IN HANDLE SectionHandle OPTIONAL
,
279 IN HANDLE DebugPort OPTIONAL
,
280 IN HANDLE ExceptionPort OPTIONAL
,
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
298 #ifndef NTOS_MODE_USER
305 return (PTEB
)(ULONG_PTR
)__readfsdword(0x18);
309 __asm__
__volatile__ (
310 "movl %%fs:0x18, %0\n"
320 struct _TEB
* NtCurrentTeb(void);
327 IN HANDLE ThreadHandle
,
328 IN HANDLE ThreadToImpersonate
,
329 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
336 IN HANDLE ProcessHandle
,
337 IN HANDLE JobHandle OPTIONAL
344 OUT PHANDLE ProcessHandle
,
345 IN ACCESS_MASK DesiredAccess
,
346 IN POBJECT_ATTRIBUTES ObjectAttributes
,
347 IN PCLIENT_ID ClientId
354 OUT PHANDLE ThreadHandle
,
355 IN ACCESS_MASK DesiredAccess
,
356 IN POBJECT_ATTRIBUTES ObjectAttributes
,
357 IN PCLIENT_ID ClientId
364 IN HANDLE ThreadHandle
,
365 IN ACCESS_MASK DesiredAccess
,
366 IN BOOLEAN OpenAsSelf
,
367 OUT PHANDLE TokenHandle
374 IN HANDLE ThreadHandle
,
375 IN ACCESS_MASK DesiredAccess
,
376 IN BOOLEAN OpenAsSelf
,
377 IN ULONG HandleAttributes
,
378 OUT PHANDLE TokenHandle
384 NtQueryInformationJobObject(
386 JOBOBJECTINFOCLASS JobInformationClass
,
387 PVOID JobInformation
,
388 ULONG JobInformationLength
,
396 NtQueryInformationProcess(
397 IN HANDLE ProcessHandle
,
398 IN PROCESSINFOCLASS ProcessInformationClass
,
399 OUT PVOID ProcessInformation
,
400 IN ULONG ProcessInformationLength
,
401 OUT PULONG ReturnLength OPTIONAL
408 NtQueryInformationThread(
409 IN HANDLE ThreadHandle
,
410 IN THREADINFOCLASS ThreadInformationClass
,
411 OUT PVOID ThreadInformation
,
412 IN ULONG ThreadInformationLength
,
413 OUT PULONG ReturnLength
419 NtRegisterThreadTerminatePort(
420 HANDLE TerminationPort
427 IN HANDLE ThreadHandle
,
428 OUT PULONG SuspendCount
435 IN HANDLE ProcessHandle
441 NtSetInformationJobObject(
443 JOBOBJECTINFOCLASS JobInformationClass
,
444 PVOID JobInformation
,
445 ULONG JobInformationLength
451 NtSetInformationProcess(
452 IN HANDLE ProcessHandle
,
453 IN PROCESSINFOCLASS ProcessInformationClass
,
454 IN PVOID ProcessInformation
,
455 IN ULONG ProcessInformationLength
461 NtSetInformationThread(
462 IN HANDLE ThreadHandle
,
463 IN THREADINFOCLASS ThreadInformationClass
,
464 IN PVOID ThreadInformation
,
465 IN ULONG ThreadInformationLength
472 IN HANDLE ProcessHandle
479 IN HANDLE ThreadHandle
,
480 IN PULONG PreviousSuspendCount
487 IN HANDLE ProcessHandle
,
488 IN NTSTATUS ExitStatus
495 IN HANDLE ThreadHandle
,
496 IN NTSTATUS ExitStatus
502 NtTerminateJobObject(
511 IN HANDLE ThreadHandle
,
512 OUT PULONG SuspendCount
519 IN HANDLE ThreadHandle
525 ZwAssignProcessToJobObject(
535 ACCESS_MASK DesiredAccess
,
536 POBJECT_ATTRIBUTES ObjectAttributes
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
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
571 IN HANDLE ThreadHandle
,
572 IN HANDLE ThreadToImpersonate
,
573 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
580 IN HANDLE ProcessHandle
,
581 IN HANDLE JobHandle OPTIONAL
588 OUT PHANDLE ProcessHandle
,
589 IN ACCESS_MASK DesiredAccess
,
590 IN POBJECT_ATTRIBUTES ObjectAttributes
,
591 IN PCLIENT_ID ClientId
598 OUT PHANDLE ThreadHandle
,
599 IN ACCESS_MASK DesiredAccess
,
600 IN POBJECT_ATTRIBUTES ObjectAttributes
,
601 IN PCLIENT_ID ClientId
608 IN HANDLE ThreadHandle
,
609 IN ACCESS_MASK DesiredAccess
,
610 IN BOOLEAN OpenAsSelf
,
611 OUT PHANDLE TokenHandle
618 IN HANDLE ThreadHandle
,
619 IN ACCESS_MASK DesiredAccess
,
620 IN BOOLEAN OpenAsSelf
,
621 IN ULONG HandleAttributes
,
622 OUT PHANDLE TokenHandle
628 ZwQueryInformationJobObject(
630 JOBOBJECTINFOCLASS JobInformationClass
,
631 PVOID JobInformation
,
632 ULONG JobInformationLength
,
640 ZwQueryInformationProcess(
641 IN HANDLE ProcessHandle
,
642 IN PROCESSINFOCLASS ProcessInformationClass
,
643 OUT PVOID ProcessInformation
,
644 IN ULONG ProcessInformationLength
,
645 OUT PULONG ReturnLength OPTIONAL
652 ZwQueryInformationThread(
653 IN HANDLE ThreadHandle
,
654 IN THREADINFOCLASS ThreadInformationClass
,
655 OUT PVOID ThreadInformation
,
656 IN ULONG ThreadInformationLength
,
657 OUT PULONG ReturnLength
663 ZwRegisterThreadTerminatePort(
664 HANDLE TerminationPort
671 IN HANDLE ThreadHandle
,
672 OUT PULONG SuspendCount
679 IN HANDLE ProcessHandle
685 ZwSetInformationJobObject(
687 JOBOBJECTINFOCLASS JobInformationClass
,
688 PVOID JobInformation
,
689 ULONG JobInformationLength
695 ZwSetInformationProcess(
696 IN HANDLE ProcessHandle
,
697 IN PROCESSINFOCLASS ProcessInformationClass
,
698 IN PVOID ProcessInformation
,
699 IN ULONG ProcessInformationLength
705 ZwSetInformationThread(
706 IN HANDLE ThreadHandle
,
707 IN THREADINFOCLASS ThreadInformationClass
,
708 IN PVOID ThreadInformation
,
709 IN ULONG ThreadInformationLength
716 IN HANDLE ProcessHandle
723 IN HANDLE ThreadHandle
,
724 IN PULONG PreviousSuspendCount
731 IN HANDLE ProcessHandle
,
732 IN NTSTATUS ExitStatus
739 IN HANDLE ThreadHandle
,
740 IN NTSTATUS ExitStatus
746 ZwTerminateJobObject(