Alex Ionescu: CSR_PROCESS and CSR_THREAD layout from WinDBG.
[reactos.git] / reactos / include / subsys / csr / server.h
1 #if !defined(__INCLUDE_CSR_SERVER_H)
2 #define __INCLUDE_CSR_SERVER_H
3
4 #define CSR_SRV_SERVER 0
5
6 typedef struct _CSR_SESSION
7 {
8 ULONG SessionId;
9 HANDLE Heap;
10 PVOID ServerData;
11
12 } CSR_SESSION, * PCSR_SESSION;
13
14
15 typedef struct _CSR_PROCESS
16 {
17 CLIENT_ID ClientId;
18 LIST_ENTRY ListLink;
19 LIST_ENTRY ThreadList;
20 PCSR_SESSION NtSession;
21 ULONG ExpectedVersion;
22 HANDLE ClientPort;
23 ULONG_PTR ClientViewBase;
24 ULONG_PTR ClientViewBounds;
25 HANDLE ProcessHandle;
26 ULONG SequenceNumber;
27 ULONG Flags;
28 ULONG DebugFlags;
29 ULONG ReferenceCount;
30 ULONG ProcessGroupId;
31 ULONG ProcessGroupSequence;
32 ULONG fVDM;
33 ULONG ThreadCount;
34 ULONG PriorityClass;
35 ULONG Reserved;
36 ULONG ShutdownLevel;
37 ULONG ShutdownFlags;
38 PVOID ServerData;
39
40 } CSR_PROCESS, * PCSR_PROCESS;
41
42 struct _CSR_WAIT;
43
44 typedef struct _CSR_THREAD
45 {
46 LARGE_INTEGER CreateTime;
47 LIST_ENTRY Link;
48 LIST_ENTRY HashLinks;
49 CLIENT_ID ClientId;
50 PCSR_PROCESS Process;
51 struct _CSR_WAIT *WaitBlock;
52 HANDLE ThreadHandle;
53 ULONG Flags;
54 ULONG ReferenceCount;
55 ULONG ImpersonationCount;
56
57 } CSR_THREAD, * PCSR_THREAD;
58
59 typedef struct _CSR_WAIT
60 {
61 PCSR_THREAD CsrThread;
62
63 } CSR_WAIT, * PCSR_WAIT;
64
65
66 typedef VOID (CALLBACK * CSR_SERVER_THREAD)(PVOID);
67
68 /* symbols exported by native DLL csrsrv.dll */
69
70 NTSTATUS STDCALL CsrAddStaticServerThread(CSR_SERVER_THREAD);
71 NTSTATUS STDCALL CsrCallServerFromServer();
72 NTSTATUS STDCALL CsrCreateProcess(PCSR_SESSION,PCSR_PROCESS*);
73 NTSTATUS STDCALL CsrCreateRemoteThread();
74 NTSTATUS STDCALL CsrCreateSession(PCSR_SESSION*);
75 NTSTATUS STDCALL CsrCreateThread(PCSR_PROCESS,PCSR_THREAD*);
76 NTSTATUS STDCALL CsrCreateWait(PCSR_THREAD,PCSR_WAIT*);
77 NTSTATUS STDCALL CsrDebugProcess(PCSR_PROCESS);
78 NTSTATUS STDCALL CsrDebugProcessStop(PCSR_PROCESS);
79 NTSTATUS STDCALL CsrDereferenceProcess(PCSR_PROCESS);
80 NTSTATUS STDCALL CsrDereferenceThread(PCSR_THREAD);
81 NTSTATUS STDCALL CsrDereferenceWait(PCSR_WAIT);
82 NTSTATUS STDCALL CsrDestroyProcess(PCSR_PROCESS);
83 NTSTATUS STDCALL CsrDestroySession (PCSR_SESSION);
84 NTSTATUS STDCALL CsrDestroyThread(PCSR_THREAD);
85 NTSTATUS STDCALL CsrExecServerThread();
86 NTSTATUS STDCALL CsrGetProcessLuid(PCSR_PROCESS,PLUID);
87 NTSTATUS STDCALL CsrImpersonateClient();
88 NTSTATUS STDCALL CsrLockProcessByClientId();
89 NTSTATUS STDCALL CsrLockThreadByClientId();
90 NTSTATUS STDCALL CsrMoveSatisfiedWait(PCSR_WAIT);
91 NTSTATUS STDCALL CsrNotifyWait(PCSR_WAIT);
92 HANDLE STDCALL CsrQueryApiPort(VOID);
93 NTSTATUS STDCALL CsrReferenceThread(PCSR_THREAD);
94 NTSTATUS STDCALL CsrRevertToSelf();
95 NTSTATUS STDCALL CsrServerInitialization(ULONG,LPWSTR*);
96 NTSTATUS STDCALL CsrSetBackgroundPriority();
97 NTSTATUS STDCALL CsrSetCallingSpooler();
98 NTSTATUS STDCALL CsrSetForegroundPriority();
99 NTSTATUS STDCALL CsrShutdownProcesses(PCSR_SESSION);
100 NTSTATUS STDCALL CsrUnhandledExceptionFilter();
101 NTSTATUS STDCALL CsrUnlockProcess(PCSR_PROCESS);
102 NTSTATUS STDCALL CsrUnlockThread(PCSR_THREAD);
103 NTSTATUS STDCALL CsrValidateMessageBuffer();
104 NTSTATUS STDCALL CsrValidateMessageString();
105
106 #endif /* ndef __INCLUDE_CSR_SERVER_H */