06b358f5092939c3eeb5c2616dd7c9963c2549cd
[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 #include <ntos.h>
13
14 #include <csrss/csrss.h>
15
16 typedef struct Object_tt
17 {
18 LONG Type;
19 LONG ReferenceCount;
20 CRITICAL_SECTION Lock;
21 } Object_t;
22
23 typedef struct ConsoleInput_t
24 {
25 LIST_ENTRY ListEntry;
26 INPUT_RECORD InputEvent;
27 BOOLEAN Echoed; // already been echoed or not
28 BOOLEAN Fake; // synthesized, not a real event
29 BOOLEAN NotChar; // message should not be used to return a character
30 } ConsoleInput;
31
32 typedef struct tagCSRSS_CONSOLE *PCSRSS_CONSOLE;
33
34 typedef struct _CSRSS_PROCESS_DATA
35 {
36 PCSRSS_CONSOLE Console;
37 ULONG HandleTableSize;
38 Object_t ** HandleTable;
39 HANDLE ProcessId;
40 HANDLE Process;
41 ULONG ShutdownLevel;
42 ULONG ShutdownFlags;
43 HANDLE ConsoleEvent;
44 PVOID CsrSectionViewBase;
45 ULONG CsrSectionViewSize;
46 struct _CSRSS_PROCESS_DATA * next;
47 LIST_ENTRY ProcessEntry;
48 PCONTROLDISPATCHER CtrlDispatcher;
49 } CSRSS_PROCESS_DATA, *PCSRSS_PROCESS_DATA;
50
51 typedef VOID (STDCALL *CSR_CLEANUP_OBJECT_PROC)(Object_t *Object);
52
53 typedef struct tagCSRSS_OBJECT_DEFINITION
54 {
55 LONG Type;
56 CSR_CLEANUP_OBJECT_PROC CsrCleanupObjectProc;
57 } CSRSS_OBJECT_DEFINITION, *PCSRSS_OBJECT_DEFINITION;
58
59 typedef NTSTATUS (STDCALL *CSRSS_API_PROC)(PCSRSS_PROCESS_DATA ProcessData,
60 PCSRSS_API_REQUEST Request,
61 PCSRSS_API_REPLY Reply);
62
63 typedef struct _CSRSS_API_DEFINITION
64 {
65 ULONG Type;
66 ULONG MinRequestSize;
67 ULONG MinReplySize;
68 CSRSS_API_PROC Handler;
69 } CSRSS_API_DEFINITION, *PCSRSS_API_DEFINITION;
70
71 #define CSRSS_DEFINE_API(Func, Handler) \
72 { Func, sizeof(Func##_REQUEST), sizeof(Func##_REPLY), Handler }
73
74 typedef struct _CSRSS_LISTEN_DATA
75 {
76 HANDLE ApiPortHandle;
77 ULONG ApiDefinitionsCount;
78 PCSRSS_API_DEFINITION *ApiDefinitions;
79 } CSRSS_LISTEN_DATA, *PCSRSS_LISTEN_DATA;
80
81 #define CSR_API(n) NTSTATUS STDCALL n (\
82 PCSRSS_PROCESS_DATA ProcessData,\
83 PCSRSS_API_REQUEST Request,\
84 PCSRSS_API_REPLY Reply)
85
86 /* init.c */
87 extern HANDLE hBootstrapOk;
88
89 /* api/process.c */
90 CSR_API(CsrConnectProcess);
91 CSR_API(CsrCreateProcess);
92 CSR_API(CsrTerminateProcess);
93
94 /* print.c */
95 VOID STDCALL DisplayString(LPCWSTR lpwString);
96 VOID STDCALL PrintString (char* fmt, ...);
97
98 /* api/wapi.c */
99 NTSTATUS FASTCALL CsrApiRegisterDefinitions(PCSRSS_API_DEFINITION NewDefinitions);
100 VOID FASTCALL CsrApiCallHandler(PCSRSS_PROCESS_DATA ProcessData,
101 PCSRSS_API_REQUEST Request,
102 PCSRSS_API_REPLY Reply);
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 CsrGetObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Handle, Object_t **Object );
122 BOOL STDCALL CsrServerInitialization (ULONG ArgumentCount, PWSTR *ArgumentArray);
123 NTSTATUS STDCALL CsrReleaseObjectByPointer(Object_t *Object);
124 NTSTATUS STDCALL CsrReleaseObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Object );
125 NTSTATUS STDCALL CsrVerifyObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Object );
126
127 CSR_API(CsrGetInputHandle);
128 CSR_API(CsrGetOutputHandle);
129 CSR_API(CsrCloseHandle);
130 CSR_API(CsrVerifyHandle);
131 CSR_API(CsrDuplicateHandle);
132 CSR_API(CsrGetInputWaitHandle);
133
134 /* api/user.c */
135 CSR_API(CsrRegisterServicesProcess);
136 CSR_API(CsrExitReactos);
137 CSR_API(CsrGetShutdownParameters);
138 CSR_API(CsrSetShutdownParameters);
139
140 CSR_API(CsrSetLogonNotifyWindow);
141 CSR_API(CsrRegisterLogonProcess);
142
143 #endif /* ndef API_H_INCLUDED */
144
145 /* EOF */
146