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
);
108 IN HANDLE ThreadHandle
,
109 OUT PULONG SuspendCount
115 IN HANDLE ThreadHandle
120 NtAssignProcessToJobObject(
129 ACCESS_MASK DesiredAccess
,
130 POBJECT_ATTRIBUTES ObjectAttributes
136 OUT PHANDLE ProcessHandle
,
137 IN ACCESS_MASK DesiredAccess
,
138 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
139 IN HANDLE ParentProcess
,
140 IN BOOLEAN InheritObjectTable
,
141 IN HANDLE SectionHandle OPTIONAL
,
142 IN HANDLE DebugPort OPTIONAL
,
143 IN HANDLE ExceptionPort OPTIONAL
149 OUT PHANDLE ThreadHandle
,
150 IN ACCESS_MASK DesiredAccess
,
151 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
152 IN HANDLE ProcessHandle
,
153 OUT PCLIENT_ID ClientId
,
154 IN PCONTEXT ThreadContext
,
155 IN PINITIAL_TEB UserStack
,
156 IN BOOLEAN CreateSuspended
162 IN HANDLE ThreadHandle
,
163 IN HANDLE ThreadToImpersonate
,
164 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
170 IN HANDLE ProcessHandle
,
171 IN HANDLE JobHandle OPTIONAL
178 OUT PHANDLE ProcessHandle
,
179 IN ACCESS_MASK DesiredAccess
,
180 IN POBJECT_ATTRIBUTES ObjectAttributes
,
181 IN PCLIENT_ID ClientId
187 OUT PHANDLE ThreadHandle
,
188 IN ACCESS_MASK DesiredAccess
,
189 IN POBJECT_ATTRIBUTES ObjectAttributes
,
190 IN PCLIENT_ID ClientId
197 IN HANDLE ThreadHandle
,
198 IN ACCESS_MASK DesiredAccess
,
199 IN BOOLEAN OpenAsSelf
,
200 OUT PHANDLE TokenHandle
207 IN HANDLE ThreadHandle
,
208 IN ACCESS_MASK DesiredAccess
,
209 IN BOOLEAN OpenAsSelf
,
210 IN ULONG HandleAttributes
,
211 OUT PHANDLE TokenHandle
216 NtQueryInformationJobObject(
218 JOBOBJECTINFOCLASS JobInformationClass
,
219 PVOID JobInformation
,
220 ULONG JobInformationLength
,
227 NtQueryInformationProcess(
228 IN HANDLE ProcessHandle
,
229 IN PROCESSINFOCLASS ProcessInformationClass
,
230 OUT PVOID ProcessInformation
,
231 IN ULONG ProcessInformationLength
,
232 OUT PULONG ReturnLength OPTIONAL
238 NtQueryInformationThread(
239 IN HANDLE ThreadHandle
,
240 IN THREADINFOCLASS ThreadInformationClass
,
241 OUT PVOID ThreadInformation
,
242 IN ULONG ThreadInformationLength
,
243 OUT PULONG ReturnLength
248 NtRegisterThreadTerminatePort(
249 HANDLE TerminationPort
255 IN HANDLE ThreadHandle
,
256 OUT PULONG SuspendCount
262 IN HANDLE ProcessHandle
267 NtSetInformationJobObject(
269 JOBOBJECTINFOCLASS JobInformationClass
,
270 PVOID JobInformation
,
271 ULONG JobInformationLength
276 NtSetInformationProcess(
277 IN HANDLE ProcessHandle
,
278 IN PROCESSINFOCLASS ProcessInformationClass
,
279 IN PVOID ProcessInformation
,
280 IN ULONG ProcessInformationLength
286 NtSetInformationThread(
287 IN HANDLE ThreadHandle
,
288 IN THREADINFOCLASS ThreadInformationClass
,
289 IN PVOID ThreadInformation
,
290 IN ULONG ThreadInformationLength
296 IN HANDLE ProcessHandle
302 IN HANDLE ThreadHandle
,
303 IN PULONG PreviousSuspendCount
309 IN HANDLE ProcessHandle
,
310 IN NTSTATUS ExitStatus
316 IN HANDLE ThreadHandle
,
317 IN NTSTATUS ExitStatus
322 NtTerminateJobObject(
330 IN HANDLE ThreadHandle
,
331 OUT PULONG SuspendCount
337 IN HANDLE ThreadHandle
342 ZwAssignProcessToJobObject(
351 ACCESS_MASK DesiredAccess
,
352 POBJECT_ATTRIBUTES ObjectAttributes
358 OUT PHANDLE ProcessHandle
,
359 IN ACCESS_MASK DesiredAccess
,
360 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
361 IN HANDLE ParentProcess
,
362 IN BOOLEAN InheritObjectTable
,
363 IN HANDLE SectionHandle OPTIONAL
,
364 IN HANDLE DebugPort OPTIONAL
,
365 IN HANDLE ExceptionPort OPTIONAL
371 OUT PHANDLE ThreadHandle
,
372 IN ACCESS_MASK DesiredAccess
,
373 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
374 IN HANDLE ProcessHandle
,
375 OUT PCLIENT_ID ClientId
,
376 IN PCONTEXT ThreadContext
,
377 IN PINITIAL_TEB UserStack
,
378 IN BOOLEAN CreateSuspended
384 IN HANDLE ThreadHandle
,
385 IN HANDLE ThreadToImpersonate
,
386 IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
392 IN HANDLE ProcessHandle
,
393 IN HANDLE JobHandle OPTIONAL
400 OUT PHANDLE ProcessHandle
,
401 IN ACCESS_MASK DesiredAccess
,
402 IN POBJECT_ATTRIBUTES ObjectAttributes
,
403 IN PCLIENT_ID ClientId
409 OUT PHANDLE ThreadHandle
,
410 IN ACCESS_MASK DesiredAccess
,
411 IN POBJECT_ATTRIBUTES ObjectAttributes
,
412 IN PCLIENT_ID ClientId
419 IN HANDLE ThreadHandle
,
420 IN ACCESS_MASK DesiredAccess
,
421 IN BOOLEAN OpenAsSelf
,
422 OUT PHANDLE TokenHandle
429 IN HANDLE ThreadHandle
,
430 IN ACCESS_MASK DesiredAccess
,
431 IN BOOLEAN OpenAsSelf
,
432 IN ULONG HandleAttributes
,
433 OUT PHANDLE TokenHandle
438 ZwQueryInformationJobObject(
440 JOBOBJECTINFOCLASS JobInformationClass
,
441 PVOID JobInformation
,
442 ULONG JobInformationLength
,
449 ZwQueryInformationProcess(
450 IN HANDLE ProcessHandle
,
451 IN PROCESSINFOCLASS ProcessInformationClass
,
452 OUT PVOID ProcessInformation
,
453 IN ULONG ProcessInformationLength
,
454 OUT PULONG ReturnLength OPTIONAL
460 ZwQueryInformationThread(
461 IN HANDLE ThreadHandle
,
462 IN THREADINFOCLASS ThreadInformationClass
,
463 OUT PVOID ThreadInformation
,
464 IN ULONG ThreadInformationLength
,
465 OUT PULONG ReturnLength
470 ZwRegisterThreadTerminatePort(
471 HANDLE TerminationPort
477 IN HANDLE ThreadHandle
,
478 OUT PULONG SuspendCount
484 IN HANDLE ProcessHandle
489 ZwSetInformationJobObject(
491 JOBOBJECTINFOCLASS JobInformationClass
,
492 PVOID JobInformation
,
493 ULONG JobInformationLength
498 ZwSetInformationProcess(
499 IN HANDLE ProcessHandle
,
500 IN PROCESSINFOCLASS ProcessInformationClass
,
501 IN PVOID ProcessInformation
,
502 IN ULONG ProcessInformationLength
508 ZwSetInformationThread(
509 IN HANDLE ThreadHandle
,
510 IN THREADINFOCLASS ThreadInformationClass
,
511 IN PVOID ThreadInformation
,
512 IN ULONG ThreadInformationLength
518 IN HANDLE ProcessHandle
524 IN HANDLE ThreadHandle
,
525 IN PULONG PreviousSuspendCount
531 IN HANDLE ProcessHandle
,
532 IN NTSTATUS ExitStatus
538 IN HANDLE ThreadHandle
,
539 IN NTSTATUS ExitStatus
544 ZwTerminateJobObject(