:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / include / ddk / psfuncs.h
1 /* $Id$
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(struct _EPROCESS* Process);
42 NTSTATUS STDCALL PsCreateWin32Thread(struct _ETHREAD* Thread);
43
44 VOID STDCALL PsEstablishWin32Callouts(PVOID Param1,
45                                       PVOID Param2,
46                                       PVOID Param3,
47                                       PVOID Param4,
48                                       ULONG W32ThreadSize,
49                                       ULONG W32ProcessSize);
50
51 struct _ETHREAD* STDCALL PsGetCurrentThread(VOID);
52 struct _EPROCESS* STDCALL PsGetCurrentProcess(VOID);
53 PACCESS_TOKEN STDCALL PsReferenceImpersonationToken(struct _ETHREAD* Thread,
54                                                     PULONG Unknown1,
55                                                     PULONG Unknown2,
56                                                     SECURITY_IMPERSONATION_LEVEL* 
57                                                     Level);
58 PACCESS_TOKEN STDCALL PsReferencePrimaryToken(struct _EPROCESS* Process);
59 NTSTATUS STDCALL PsAssignImpersonationToken(struct _ETHREAD* Thread,
60                                             HANDLE TokenHandle);
61
62 VOID STDCALL PsImpersonateClient(struct _ETHREAD* Thread,
63                                  PACCESS_TOKEN Token,
64                                  UCHAR b,
65                                  UCHAR c,
66                                  SECURITY_IMPERSONATION_LEVEL Level);
67 VOID STDCALL PsRevertToSelf(VOID);
68
69 BOOLEAN STDCALL PsGetVersion (PULONG            MajorVersion    OPTIONAL,
70                               PULONG            MinorVersion    OPTIONAL,
71                               PULONG            BuildNumber     OPTIONAL,
72                               PUNICODE_STRING   CSDVersion      OPTIONAL);
73
74 LARGE_INTEGER STDCALL PsGetProcessExitTime(VOID);
75 BOOLEAN STDCALL PsIsThreadTerminating(struct _ETHREAD* Thread);
76
77 NTSTATUS STDCALL PsLookupProcessByProcessId(IN PVOID ProcessId,
78                                             OUT PEPROCESS *Process);
79
80 NTSTATUS STDCALL PsLookupProcessThreadByCid(IN PCLIENT_ID Cid,
81                                             OUT PEPROCESS *Process OPTIONAL,
82                                             OUT struct _ETHREAD **Thread);
83 //                                          OUT PETHREAD *Thread);
84
85 NTSTATUS STDCALL PsLookupThreadByThreadId(IN PVOID ThreadId,
86                                           OUT struct _ETHREAD **Thread);
87 //                                        OUT PETHREAD *Thread);
88
89 NTSTATUS STDCALL
90 PsSetCreateProcessNotifyRoutine(IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
91                                 IN BOOLEAN Remove);
92
93 NTSTATUS STDCALL
94 PsSetCreateThreadNotifyRoutine(IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
95
96 #endif
97
98 /* EOF */