- implement GetConsoleAlias* AddConsoleAlias function in csrss
[reactos.git] / reactos / subsystems / win32 / 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 HANDLE ServerCommunicationPort;
51 struct _CSRSS_PROCESS_DATA * next;
52 LIST_ENTRY ProcessEntry;
53 PCONTROLDISPATCHER CtrlDispatcher;
54 BOOL Terminated;
55 } CSRSS_PROCESS_DATA, *PCSRSS_PROCESS_DATA;
56
57 typedef VOID (STDCALL *CSR_CLEANUP_OBJECT_PROC)(Object_t *Object);
58
59 typedef struct tagCSRSS_OBJECT_DEFINITION
60 {
61 LONG Type;
62 CSR_CLEANUP_OBJECT_PROC CsrCleanupObjectProc;
63 } CSRSS_OBJECT_DEFINITION, *PCSRSS_OBJECT_DEFINITION;
64
65 typedef NTSTATUS (STDCALL *CSRSS_API_PROC)(PCSRSS_PROCESS_DATA ProcessData,
66 PCSR_API_MESSAGE Request);
67
68 typedef struct _CSRSS_API_DEFINITION
69 {
70 ULONG Type;
71 ULONG MinRequestSize;
72 CSRSS_API_PROC Handler;
73 } CSRSS_API_DEFINITION, *PCSRSS_API_DEFINITION;
74
75 #define CSRSS_DEFINE_API(Func, Handler) \
76 { Func, sizeof(CSRSS_##Func), Handler }
77
78 typedef struct _CSRSS_LISTEN_DATA
79 {
80 HANDLE ApiPortHandle;
81 ULONG ApiDefinitionsCount;
82 PCSRSS_API_DEFINITION *ApiDefinitions;
83 } CSRSS_LISTEN_DATA, *PCSRSS_LISTEN_DATA;
84
85 #define CSR_API(n) NTSTATUS STDCALL n (\
86 PCSRSS_PROCESS_DATA ProcessData,\
87 PCSR_API_MESSAGE Request)
88
89 /* init.c */
90 extern HANDLE hBootstrapOk;
91
92 /* api/process.c */
93 CSR_API(CsrConnectProcess);
94 CSR_API(CsrCreateProcess);
95 CSR_API(CsrTerminateProcess);
96
97 /* print.c */
98 VOID STDCALL DisplayString(LPCWSTR lpwString);
99 VOID STDCALL PrintString (char* fmt, ...);
100
101 /* api/wapi.c */
102 NTSTATUS FASTCALL CsrApiRegisterDefinitions(PCSRSS_API_DEFINITION NewDefinitions);
103 VOID FASTCALL CsrApiCallHandler(PCSRSS_PROCESS_DATA ProcessData,
104 PCSR_API_MESSAGE Request);
105 DWORD STDCALL ServerApiPortThread (PVOID PortHandle);
106 DWORD STDCALL ServerSbApiPortThread (PVOID PortHandle);
107 DWORD STDCALL Console_Api( PVOID unused );
108 VOID
109 NTAPI
110 ClientConnectionThread(HANDLE ServerPort);
111
112 extern HANDLE CsrssApiHeap;
113
114 /* api/conio.c */
115 VOID STDCALL CsrInitConsoleSupport(VOID);
116
117 /* api/process.c */
118 typedef NTSTATUS (STDCALL *CSRSS_ENUM_PROCESS_PROC)(PCSRSS_PROCESS_DATA ProcessData,
119 PVOID Context);
120 VOID STDCALL CsrInitProcessData(VOID);
121 PCSRSS_PROCESS_DATA STDCALL CsrGetProcessData(HANDLE ProcessId);
122 PCSRSS_PROCESS_DATA STDCALL CsrCreateProcessData(HANDLE ProcessId);
123 NTSTATUS STDCALL CsrFreeProcessData( HANDLE Pid );
124 NTSTATUS STDCALL CsrEnumProcesses(CSRSS_ENUM_PROCESS_PROC EnumProc, PVOID Context);
125
126 /* api/handle.c */
127 NTSTATUS FASTCALL CsrRegisterObjectDefinitions(PCSRSS_OBJECT_DEFINITION NewDefinitions);
128 NTSTATUS STDCALL CsrInsertObject( PCSRSS_PROCESS_DATA ProcessData, PHANDLE Handle, Object_t *Object );
129 NTSTATUS STDCALL CsrDuplicateHandleTable(PCSRSS_PROCESS_DATA SourceProcessData, PCSRSS_PROCESS_DATA TargetProcessData);
130 NTSTATUS STDCALL CsrGetObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Handle, Object_t **Object );
131 BOOL STDCALL CsrServerInitialization (int,char**,char**);
132 NTSTATUS STDCALL CsrReleaseObjectByPointer(Object_t *Object);
133 NTSTATUS STDCALL CsrReleaseObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Object );
134 NTSTATUS STDCALL CsrVerifyObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Object );
135
136 CSR_API(CsrGetInputHandle);
137 CSR_API(CsrGetOutputHandle);
138 CSR_API(CsrCloseHandle);
139 CSR_API(CsrVerifyHandle);
140 CSR_API(CsrDuplicateHandle);
141 CSR_API(CsrGetInputWaitHandle);
142
143 /* api/user.c */
144 CSR_API(CsrRegisterServicesProcess);
145 CSR_API(CsrExitReactos);
146 CSR_API(CsrGetShutdownParameters);
147 CSR_API(CsrSetShutdownParameters);
148
149 CSR_API(CsrSetLogonNotifyWindow);
150 CSR_API(CsrRegisterLogonProcess);
151
152 CSR_API(CsrAddConsoleAlias);
153 CSR_API(CsrGetConsoleAlias);
154 CSR_API(CsrGetAllConsoleAliases);
155 CSR_API(CsrGetAllConsoleAliasesLength);
156 CSR_API(CsrGetConsoleAliasesExes);
157 CSR_API(CsrGetConsoleAliasesExesLength);
158
159
160 #endif /* ndef API_H_INCLUDED */
161
162 /* EOF */
163