610c65cc3b6cb360fa0b716f0d97899fc54549a2
[reactos.git] / reactos / subsys / csrss / include / api.h
1 /* $Id$
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: subsys/csrss/include/api.h
6 * PURPOSE: CSRSS API interface
7 */
8
9 #ifndef API_H_INCLUDED
10 #define API_H_INCLUDED
11
12 #define NTOS_MODE_USER
13 #include <ndk/ntndk.h>
14
15 #include <csrss/csrss.h>
16
17 typedef struct Object_tt
18 {
19 LONG Type;
20 LONG ReferenceCount;
21 CRITICAL_SECTION Lock;
22 } Object_t;
23
24 typedef struct ConsoleInput_t
25 {
26 LIST_ENTRY ListEntry;
27 INPUT_RECORD InputEvent;
28 BOOLEAN Echoed; // already been echoed or not
29 BOOLEAN Fake; // synthesized, not a real event
30 BOOLEAN NotChar; // message should not be used to return a character
31 } ConsoleInput;
32
33 typedef struct tagCSRSS_CONSOLE *PCSRSS_CONSOLE;
34
35 typedef struct _CSRSS_PROCESS_DATA
36 {
37 PCSRSS_CONSOLE Console;
38 PCSRSS_CONSOLE ParentConsole;
39 BOOL bInheritHandles;
40 RTL_CRITICAL_SECTION HandleTableLock;
41 ULONG HandleTableSize;
42 Object_t ** HandleTable;
43 HANDLE ProcessId;
44 HANDLE Process;
45 ULONG ShutdownLevel;
46 ULONG ShutdownFlags;
47 HANDLE ConsoleEvent;
48 PVOID CsrSectionViewBase;
49 ULONG CsrSectionViewSize;
50 struct _CSRSS_PROCESS_DATA * next;
51 LIST_ENTRY ProcessEntry;
52 PCONTROLDISPATCHER CtrlDispatcher;
53 } CSRSS_PROCESS_DATA, *PCSRSS_PROCESS_DATA;
54
55 typedef VOID (STDCALL *CSR_CLEANUP_OBJECT_PROC)(Object_t *Object);
56
57 typedef struct tagCSRSS_OBJECT_DEFINITION
58 {
59 LONG Type;
60 CSR_CLEANUP_OBJECT_PROC CsrCleanupObjectProc;
61 } CSRSS_OBJECT_DEFINITION, *PCSRSS_OBJECT_DEFINITION;
62
63 typedef NTSTATUS (STDCALL *CSRSS_API_PROC)(PCSRSS_PROCESS_DATA ProcessData,
64 PCSR_API_MESSAGE Request);
65
66 typedef struct _CSRSS_API_DEFINITION
67 {
68 ULONG Type;
69 ULONG MinRequestSize;
70 CSRSS_API_PROC Handler;
71 } CSRSS_API_DEFINITION, *PCSRSS_API_DEFINITION;
72
73 #define CSRSS_DEFINE_API(Func, Handler) \
74 { Func, sizeof(CSRSS_##Func), Handler }
75
76 typedef struct _CSRSS_LISTEN_DATA
77 {
78 HANDLE ApiPortHandle;
79 ULONG ApiDefinitionsCount;
80 PCSRSS_API_DEFINITION *ApiDefinitions;
81 } CSRSS_LISTEN_DATA, *PCSRSS_LISTEN_DATA;
82
83 #define CSR_API(n) NTSTATUS STDCALL n (\
84 PCSRSS_PROCESS_DATA ProcessData,\
85 PCSR_API_MESSAGE Request)
86
87 /* init.c */
88 extern HANDLE hBootstrapOk;
89
90 /* api/process.c */
91 CSR_API(CsrConnectProcess);
92 CSR_API(CsrCreateProcess);
93 CSR_API(CsrTerminateProcess);
94
95 /* print.c */
96 VOID STDCALL DisplayString(LPCWSTR lpwString);
97 VOID STDCALL PrintString (char* fmt, ...);
98
99 /* api/wapi.c */
100 NTSTATUS FASTCALL CsrApiRegisterDefinitions(PCSRSS_API_DEFINITION NewDefinitions);
101 VOID FASTCALL CsrApiCallHandler(PCSRSS_PROCESS_DATA ProcessData,
102 PCSR_API_MESSAGE Request);
103 DWORD STDCALL ServerApiPortThread (PVOID PortHandle);
104 DWORD STDCALL ServerSbApiPortThread (PVOID PortHandle);
105 DWORD STDCALL Console_Api( PVOID unused );
106
107 extern HANDLE CsrssApiHeap;
108
109 /* api/conio.c */
110 VOID STDCALL CsrInitConsoleSupport(VOID);
111
112 /* api/process.c */
113 VOID STDCALL CsrInitProcessData(VOID);
114 PCSRSS_PROCESS_DATA STDCALL CsrGetProcessData(HANDLE ProcessId);
115 PCSRSS_PROCESS_DATA STDCALL CsrCreateProcessData(HANDLE ProcessId);
116 NTSTATUS STDCALL CsrFreeProcessData( HANDLE Pid );
117
118 /* api/handle.c */
119 NTSTATUS FASTCALL CsrRegisterObjectDefinitions(PCSRSS_OBJECT_DEFINITION NewDefinitions);
120 NTSTATUS STDCALL CsrInsertObject( PCSRSS_PROCESS_DATA ProcessData, PHANDLE Handle, Object_t *Object );
121 NTSTATUS STDCALL CsrDuplicateHandleTable(PCSRSS_PROCESS_DATA SourceProcessData, PCSRSS_PROCESS_DATA TargetProcessData);
122 NTSTATUS STDCALL CsrGetObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Handle, Object_t **Object );
123 BOOL STDCALL CsrServerInitialization (int,char**,char**);
124 NTSTATUS STDCALL CsrReleaseObjectByPointer(Object_t *Object);
125 NTSTATUS STDCALL CsrReleaseObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Object );
126 NTSTATUS STDCALL CsrVerifyObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Object );
127
128 CSR_API(CsrGetInputHandle);
129 CSR_API(CsrGetOutputHandle);
130 CSR_API(CsrCloseHandle);
131 CSR_API(CsrVerifyHandle);
132 CSR_API(CsrDuplicateHandle);
133 CSR_API(CsrGetInputWaitHandle);
134
135 /* api/user.c */
136 CSR_API(CsrRegisterServicesProcess);
137 CSR_API(CsrExitReactos);
138 CSR_API(CsrGetShutdownParameters);
139 CSR_API(CsrSetShutdownParameters);
140
141 CSR_API(CsrSetLogonNotifyWindow);
142 CSR_API(CsrRegisterLogonProcess);
143
144 #endif /* ndef API_H_INCLUDED */
145
146 /* EOF */
147