Implemented process and thread notification routines.
[reactos.git] / reactos / include / ddk / psfuncs.h
1 /* $Id: psfuncs.h,v 1.18 2002/01/03 17:58:44 ekohl Exp $
2 */
3 #ifndef _INCLUDE_DDK_PSFUNCS_H
4 #define _INCLUDE_DDK_PSFUNCS_H
5
6 NTSTATUS STDCALL PsAssignImpersonationToken (struct _ETHREAD* Thread,
7 HANDLE TokenHandle);
8
9 HANDLE STDCALL PsGetCurrentProcessId(VOID);
10 HANDLE STDCALL PsGetCurrentThreadId(VOID);
11
12 /*
13 * FUNCTION: Creates a thread which executes in kernel mode
14 * ARGUMENTS:
15 * ThreadHandle (OUT) = Caller supplied storage for the returned thread
16 * handle
17 * DesiredAccess = Requested access to the thread
18 * ObjectAttributes = Object attributes (optional)
19 * ProcessHandle = Handle of process thread will run in
20 * NULL to use system process
21 * ClientId (OUT) = Caller supplied storage for the returned client id
22 * of the thread (optional)
23 * StartRoutine = Entry point for the thread
24 * StartContext = Argument supplied to the thread when it begins
25 * execution
26 * RETURNS: Success or failure status
27 */
28 NTSTATUS STDCALL PsCreateSystemThread(PHANDLE ThreadHandle,
29 ACCESS_MASK DesiredAccess,
30 POBJECT_ATTRIBUTES ObjectAttributes,
31 HANDLE ProcessHandle,
32 PCLIENT_ID ClientId,
33 PKSTART_ROUTINE StartRoutine,
34 PVOID StartContext);
35 NTSTATUS STDCALL PsTerminateSystemThread(NTSTATUS ExitStatus);
36
37 NTSTATUS STDCALL PsCreateSystemProcess(PHANDLE ProcessHandle,
38 ACCESS_MASK DesiredAccess,
39 POBJECT_ATTRIBUTES ObjectAttributes);
40
41 NTSTATUS STDCALL PsCreateWin32Process(PEPROCESS Process);
42
43 VOID STDCALL PsEstablishWin32Callouts(PVOID Param1,
44 PVOID Param2,
45 PVOID Param3,
46 PVOID Param4,
47 PVOID Param5,
48 ULONG W32ProcessSize);
49
50 struct _ETHREAD* STDCALL PsGetCurrentThread(VOID);
51 struct _EPROCESS* STDCALL PsGetCurrentProcess(VOID);
52 PACCESS_TOKEN STDCALL PsReferenceImpersonationToken(struct _ETHREAD* Thread,
53 PULONG Unknown1,
54 PULONG Unknown2,
55 SECURITY_IMPERSONATION_LEVEL*
56 Level);
57 PACCESS_TOKEN STDCALL PsReferencePrimaryToken(struct _EPROCESS* Process);
58 NTSTATUS STDCALL PsAssignImpersonationToken(struct _ETHREAD* Thread,
59 HANDLE TokenHandle);
60
61 VOID STDCALL PsImpersonateClient(struct _ETHREAD* Thread,
62 PACCESS_TOKEN Token,
63 UCHAR b,
64 UCHAR c,
65 SECURITY_IMPERSONATION_LEVEL Level);
66 VOID STDCALL PsRevertToSelf(VOID);
67
68 BOOLEAN STDCALL PsGetVersion (PULONG MajorVersion OPTIONAL,
69 PULONG MinorVersion OPTIONAL,
70 PULONG BuildNumber OPTIONAL,
71 PUNICODE_STRING CSDVersion OPTIONAL);
72
73 VOID STDCALL PsDispatchThread(ULONG NewThreadStatus);
74
75 LARGE_INTEGER STDCALL PsGetProcessExitTime(VOID);
76 BOOLEAN STDCALL PsIsThreadTerminating(struct _ETHREAD* Thread);
77
78 NTSTATUS STDCALL PsLookupProcessByProcessId(IN PVOID ProcessId,
79 OUT PEPROCESS *Process);
80
81 NTSTATUS STDCALL PsLookupProcessThreadByCid(IN PCLIENT_ID Cid,
82 OUT PEPROCESS *Process OPTIONAL,
83 OUT struct _ETHREAD **Thread);
84 // OUT PETHREAD *Thread);
85
86 NTSTATUS STDCALL PsLookupThreadByThreadId(IN PVOID ThreadId,
87 OUT struct _ETHREAD **Thread);
88 // OUT PETHREAD *Thread);
89
90 NTSTATUS STDCALL
91 PsSetCreateProcessNotifyRoutine(IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
92 IN BOOLEAN Remove);
93
94 NTSTATUS STDCALL
95 PsSetCreateThreadNotifyRoutine(IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
96
97 #endif
98
99 /* EOF */