3 Copyright (c) Alex Ionescu. All rights reserved.
11 Function definitions for the Process Manager
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
28 #ifndef NTOS_MODE_USER
31 // Win32K Process/Thread Functions
47 PsGetProcessWin32Process(
53 PsSetProcessWin32Process(
60 PsSetThreadWin32Thread(
67 PsGetThreadWin32Thread(
73 PsEstablishWin32Callouts(
74 PW32_CALLOUT_DATA CalloutData
79 PsReturnProcessNonPagedPoolQuota(
85 // Process Impersonation Functions
98 PsGetProcessId(PEPROCESS Process
);
109 IN HANDLE ThreadHandle
,
110 OUT PULONG SuspendCount
117 IN HANDLE ThreadHandle
123 NtAssignProcessToJobObject(
133 ACCESS_MASK DesiredAccess
,
134 POBJECT_ATTRIBUTES ObjectAttributes
141 OUT PHANDLE ProcessHandle
,
142 IN ACCESS_MASK DesiredAccess
,
143 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
144 IN HANDLE ParentProcess
,
145 IN BOOLEAN InheritObjectTable
,
146 IN HANDLE SectionHandle OPTIONAL
,
147 IN HANDLE DebugPort OPTIONAL
,
148 IN HANDLE ExceptionPort OPTIONAL
155 OUT PHANDLE ThreadHandle
,
156 IN ACCESS_MASK DesiredAccess
,
157 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
158 IN HANDLE ProcessHandle
,
159 OUT PCLIENT_ID ClientId
,
160 IN PCONTEXT ThreadContext
,
161 IN PINITIAL_TEB UserStack
,
162 IN BOOLEAN CreateSuspended
169 IN HANDLE ThreadHandle
,
170 IN HANDLE ThreadToImpersonate
,
171 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
178 IN HANDLE ProcessHandle
,
179 IN HANDLE JobHandle OPTIONAL
186 OUT PHANDLE ProcessHandle
,
187 IN ACCESS_MASK DesiredAccess
,
188 IN POBJECT_ATTRIBUTES ObjectAttributes
,
189 IN PCLIENT_ID ClientId
196 OUT PHANDLE ThreadHandle
,
197 IN ACCESS_MASK DesiredAccess
,
198 IN POBJECT_ATTRIBUTES ObjectAttributes
,
199 IN PCLIENT_ID ClientId
206 IN HANDLE ThreadHandle
,
207 IN ACCESS_MASK DesiredAccess
,
208 IN BOOLEAN OpenAsSelf
,
209 OUT PHANDLE TokenHandle
216 IN HANDLE ThreadHandle
,
217 IN ACCESS_MASK DesiredAccess
,
218 IN BOOLEAN OpenAsSelf
,
219 IN ULONG HandleAttributes
,
220 OUT PHANDLE TokenHandle
226 NtQueryInformationJobObject(
228 JOBOBJECTINFOCLASS JobInformationClass
,
229 PVOID JobInformation
,
230 ULONG JobInformationLength
,
238 NtQueryInformationProcess(
239 IN HANDLE ProcessHandle
,
240 IN PROCESSINFOCLASS ProcessInformationClass
,
241 OUT PVOID ProcessInformation
,
242 IN ULONG ProcessInformationLength
,
243 OUT PULONG ReturnLength OPTIONAL
250 NtQueryInformationThread(
251 IN HANDLE ThreadHandle
,
252 IN THREADINFOCLASS ThreadInformationClass
,
253 OUT PVOID ThreadInformation
,
254 IN ULONG ThreadInformationLength
,
255 OUT PULONG ReturnLength
261 NtRegisterThreadTerminatePort(
262 HANDLE TerminationPort
269 IN HANDLE ThreadHandle
,
270 OUT PULONG SuspendCount
277 IN HANDLE ProcessHandle
283 NtSetInformationJobObject(
285 JOBOBJECTINFOCLASS JobInformationClass
,
286 PVOID JobInformation
,
287 ULONG JobInformationLength
293 NtSetInformationProcess(
294 IN HANDLE ProcessHandle
,
295 IN PROCESSINFOCLASS ProcessInformationClass
,
296 IN PVOID ProcessInformation
,
297 IN ULONG ProcessInformationLength
303 NtSetInformationThread(
304 IN HANDLE ThreadHandle
,
305 IN THREADINFOCLASS ThreadInformationClass
,
306 IN PVOID ThreadInformation
,
307 IN ULONG ThreadInformationLength
314 IN HANDLE ProcessHandle
320 IN HANDLE ThreadHandle
,
321 IN PULONG PreviousSuspendCount
328 IN HANDLE ProcessHandle
,
329 IN NTSTATUS ExitStatus
336 IN HANDLE ThreadHandle
,
337 IN NTSTATUS ExitStatus
343 NtTerminateJobObject(
352 IN HANDLE ThreadHandle
,
353 OUT PULONG SuspendCount
360 IN HANDLE ThreadHandle
366 ZwAssignProcessToJobObject(
376 ACCESS_MASK DesiredAccess
,
377 POBJECT_ATTRIBUTES ObjectAttributes
384 OUT PHANDLE ProcessHandle
,
385 IN ACCESS_MASK DesiredAccess
,
386 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
387 IN HANDLE ParentProcess
,
388 IN BOOLEAN InheritObjectTable
,
389 IN HANDLE SectionHandle OPTIONAL
,
390 IN HANDLE DebugPort OPTIONAL
,
391 IN HANDLE ExceptionPort OPTIONAL
398 OUT PHANDLE ThreadHandle
,
399 IN ACCESS_MASK DesiredAccess
,
400 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
401 IN HANDLE ProcessHandle
,
402 OUT PCLIENT_ID ClientId
,
403 IN PCONTEXT ThreadContext
,
404 IN PINITIAL_TEB UserStack
,
405 IN BOOLEAN CreateSuspended
412 IN HANDLE ThreadHandle
,
413 IN HANDLE ThreadToImpersonate
,
414 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
421 IN HANDLE ProcessHandle
,
422 IN HANDLE JobHandle OPTIONAL
429 OUT PHANDLE ProcessHandle
,
430 IN ACCESS_MASK DesiredAccess
,
431 IN POBJECT_ATTRIBUTES ObjectAttributes
,
432 IN PCLIENT_ID ClientId
439 OUT PHANDLE ThreadHandle
,
440 IN ACCESS_MASK DesiredAccess
,
441 IN POBJECT_ATTRIBUTES ObjectAttributes
,
442 IN PCLIENT_ID ClientId
449 IN HANDLE ThreadHandle
,
450 IN ACCESS_MASK DesiredAccess
,
451 IN BOOLEAN OpenAsSelf
,
452 OUT PHANDLE TokenHandle
459 IN HANDLE ThreadHandle
,
460 IN ACCESS_MASK DesiredAccess
,
461 IN BOOLEAN OpenAsSelf
,
462 IN ULONG HandleAttributes
,
463 OUT PHANDLE TokenHandle
469 ZwQueryInformationJobObject(
471 JOBOBJECTINFOCLASS JobInformationClass
,
472 PVOID JobInformation
,
473 ULONG JobInformationLength
,
481 ZwQueryInformationProcess(
482 IN HANDLE ProcessHandle
,
483 IN PROCESSINFOCLASS ProcessInformationClass
,
484 OUT PVOID ProcessInformation
,
485 IN ULONG ProcessInformationLength
,
486 OUT PULONG ReturnLength OPTIONAL
493 ZwQueryInformationThread(
494 IN HANDLE ThreadHandle
,
495 IN THREADINFOCLASS ThreadInformationClass
,
496 OUT PVOID ThreadInformation
,
497 IN ULONG ThreadInformationLength
,
498 OUT PULONG ReturnLength
504 ZwRegisterThreadTerminatePort(
505 HANDLE TerminationPort
512 IN HANDLE ThreadHandle
,
513 OUT PULONG SuspendCount
520 IN HANDLE ProcessHandle
526 ZwSetInformationJobObject(
528 JOBOBJECTINFOCLASS JobInformationClass
,
529 PVOID JobInformation
,
530 ULONG JobInformationLength
536 ZwSetInformationProcess(
537 IN HANDLE ProcessHandle
,
538 IN PROCESSINFOCLASS ProcessInformationClass
,
539 IN PVOID ProcessInformation
,
540 IN ULONG ProcessInformationLength
546 ZwSetInformationThread(
547 IN HANDLE ThreadHandle
,
548 IN THREADINFOCLASS ThreadInformationClass
,
549 IN PVOID ThreadInformation
,
550 IN ULONG ThreadInformationLength
557 IN HANDLE ProcessHandle
564 IN HANDLE ThreadHandle
,
565 IN PULONG PreviousSuspendCount
572 IN HANDLE ProcessHandle
,
573 IN NTSTATUS ExitStatus
580 IN HANDLE ThreadHandle
,
581 IN NTSTATUS ExitStatus
587 ZwTerminateJobObject(