1 /* $Id: psfuncs.h,v 1.18 2002/01/03 17:58:44 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(PEPROCESS Process
);
43 VOID STDCALL
PsEstablishWin32Callouts(PVOID Param1
,
48 ULONG W32ProcessSize
);
50 struct _ETHREAD
* STDCALL
PsGetCurrentThread(VOID
);
51 struct _EPROCESS
* STDCALL
PsGetCurrentProcess(VOID
);
52 PACCESS_TOKEN STDCALL
PsReferenceImpersonationToken(struct _ETHREAD
* Thread
,
55 SECURITY_IMPERSONATION_LEVEL
*
57 PACCESS_TOKEN STDCALL
PsReferencePrimaryToken(struct _EPROCESS
* Process
);
58 NTSTATUS STDCALL
PsAssignImpersonationToken(struct _ETHREAD
* Thread
,
61 VOID STDCALL
PsImpersonateClient(struct _ETHREAD
* Thread
,
65 SECURITY_IMPERSONATION_LEVEL Level
);
66 VOID STDCALL
PsRevertToSelf(VOID
);
68 BOOLEAN STDCALL
PsGetVersion (PULONG MajorVersion OPTIONAL
,
69 PULONG MinorVersion OPTIONAL
,
70 PULONG BuildNumber OPTIONAL
,
71 PUNICODE_STRING CSDVersion OPTIONAL
);
73 VOID STDCALL
PsDispatchThread(ULONG NewThreadStatus
);
75 LARGE_INTEGER STDCALL
PsGetProcessExitTime(VOID
);
76 BOOLEAN STDCALL
PsIsThreadTerminating(struct _ETHREAD
* Thread
);
78 NTSTATUS STDCALL
PsLookupProcessByProcessId(IN PVOID ProcessId
,
79 OUT PEPROCESS
*Process
);
81 NTSTATUS STDCALL
PsLookupProcessThreadByCid(IN PCLIENT_ID Cid
,
82 OUT PEPROCESS
*Process OPTIONAL
,
83 OUT
struct _ETHREAD
**Thread
);
84 // OUT PETHREAD *Thread);
86 NTSTATUS STDCALL
PsLookupThreadByThreadId(IN PVOID ThreadId
,
87 OUT
struct _ETHREAD
**Thread
);
88 // OUT PETHREAD *Thread);
91 PsSetCreateProcessNotifyRoutine(IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine
,
95 PsSetCreateThreadNotifyRoutine(IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine
);