1 /* $Id: psfuncs.h,v 1.24 2003/06/20 16:19:33 ekohl Exp $
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
);
45 PsEstablishWin32Callouts (PW32_PROCESS_CALLBACK W32ProcessCallback
,
46 PW32_THREAD_CALLBACK W32ThreadCallback
,
50 ULONG W32ProcessSize
);
52 #define PsGetCurrentProcess() IoGetCurrentProcess()
53 #define PsGetCurrentThread() ((struct _ETHREAD*) (KeGetCurrentThread()))
55 PACCESS_TOKEN STDCALL
PsReferenceImpersonationToken(struct _ETHREAD
* Thread
,
58 SECURITY_IMPERSONATION_LEVEL
*
60 PACCESS_TOKEN STDCALL
PsReferencePrimaryToken(struct _EPROCESS
* Process
);
61 NTSTATUS STDCALL
PsAssignImpersonationToken(struct _ETHREAD
* Thread
,
64 VOID STDCALL
PsImpersonateClient(struct _ETHREAD
* Thread
,
68 SECURITY_IMPERSONATION_LEVEL Level
);
69 VOID STDCALL
PsRevertToSelf(VOID
);
71 BOOLEAN STDCALL
PsGetVersion (PULONG MajorVersion OPTIONAL
,
72 PULONG MinorVersion OPTIONAL
,
73 PULONG BuildNumber OPTIONAL
,
74 PUNICODE_STRING CSDVersion OPTIONAL
);
76 LARGE_INTEGER STDCALL
PsGetProcessExitTime(VOID
);
77 BOOLEAN STDCALL
PsIsThreadTerminating(struct _ETHREAD
* Thread
);
79 NTSTATUS STDCALL
PsLookupProcessByProcessId(IN PVOID ProcessId
,
80 OUT PEPROCESS
*Process
);
82 NTSTATUS STDCALL
PsLookupProcessThreadByCid(IN PCLIENT_ID Cid
,
83 OUT PEPROCESS
*Process OPTIONAL
,
84 OUT
struct _ETHREAD
**Thread
);
85 // OUT PETHREAD *Thread);
87 NTSTATUS STDCALL
PsLookupThreadByThreadId(IN PVOID ThreadId
,
88 OUT
struct _ETHREAD
**Thread
);
89 // OUT PETHREAD *Thread);
92 PsSetCreateProcessNotifyRoutine(IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine
,
96 PsSetCreateThreadNotifyRoutine(IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine
);