3 #ifndef _INCLUDE_DDK_PSFUNCS_H
4 #define _INCLUDE_DDK_PSFUNCS_H
6 NTSTATUS STDCALL PsAssignImpersonationToken (struct _ETHREAD* Thread,
9 HANDLE STDCALL PsGetCurrentProcessId(VOID);
10 HANDLE STDCALL PsGetCurrentThreadId(VOID);
13 * FUNCTION: Creates a thread which executes in kernel mode
15 * ThreadHandle (OUT) = Caller supplied storage for the returned thread
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
26 * RETURNS: Success or failure status
28 NTSTATUS STDCALL PsCreateSystemThread(PHANDLE ThreadHandle,
29 ACCESS_MASK DesiredAccess,
30 POBJECT_ATTRIBUTES ObjectAttributes,
33 PKSTART_ROUTINE StartRoutine,
35 NTSTATUS STDCALL PsTerminateSystemThread(NTSTATUS ExitStatus);
37 NTSTATUS STDCALL PsCreateSystemProcess(PHANDLE ProcessHandle,
38 ACCESS_MASK DesiredAccess,
39 POBJECT_ATTRIBUTES ObjectAttributes);
41 NTSTATUS STDCALL PsCreateWin32Process(struct _EPROCESS* Process);
42 NTSTATUS STDCALL PsCreateWin32Thread(struct _ETHREAD* Thread);
44 VOID STDCALL PsEstablishWin32Callouts(PVOID Param1,
49 ULONG W32ProcessSize);
51 struct _ETHREAD* STDCALL PsGetCurrentThread(VOID);
52 struct _EPROCESS* STDCALL PsGetCurrentProcess(VOID);
53 PACCESS_TOKEN STDCALL PsReferenceImpersonationToken(struct _ETHREAD* Thread,
56 SECURITY_IMPERSONATION_LEVEL*
58 PACCESS_TOKEN STDCALL PsReferencePrimaryToken(struct _EPROCESS* Process);
59 NTSTATUS STDCALL PsAssignImpersonationToken(struct _ETHREAD* Thread,
62 VOID STDCALL PsImpersonateClient(struct _ETHREAD* Thread,
66 SECURITY_IMPERSONATION_LEVEL Level);
67 VOID STDCALL PsRevertToSelf(VOID);
69 BOOLEAN STDCALL PsGetVersion (PULONG MajorVersion OPTIONAL,
70 PULONG MinorVersion OPTIONAL,
71 PULONG BuildNumber OPTIONAL,
72 PUNICODE_STRING CSDVersion OPTIONAL);
74 LARGE_INTEGER STDCALL PsGetProcessExitTime(VOID);
75 BOOLEAN STDCALL PsIsThreadTerminating(struct _ETHREAD* Thread);
77 NTSTATUS STDCALL PsLookupProcessByProcessId(IN PVOID ProcessId,
78 OUT PEPROCESS *Process);
80 NTSTATUS STDCALL PsLookupProcessThreadByCid(IN PCLIENT_ID Cid,
81 OUT PEPROCESS *Process OPTIONAL,
82 OUT struct _ETHREAD **Thread);
83 // OUT PETHREAD *Thread);
85 NTSTATUS STDCALL PsLookupThreadByThreadId(IN PVOID ThreadId,
86 OUT struct _ETHREAD **Thread);
87 // OUT PETHREAD *Thread);
90 PsSetCreateProcessNotifyRoutine(IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
94 PsSetCreateThreadNotifyRoutine(IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);