Fix variable naming.
[reactos.git] / reactos / include / reactos / subsys / win / basemsg.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Base API Server DLL
4 * FILE: include/reactos/subsys/win/basemsg.h
5 * PURPOSE: Public definitions for communication
6 * between Base API Clients and Servers
7 * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
8 */
9
10 #ifndef _BASEMSG_H
11 #define _BASEMSG_H
12
13 #pragma once
14
15 #define BASESRV_SERVERDLL_INDEX 1
16 #define BASESRV_FIRST_API_NUMBER 0
17
18 // Windows Server 2003 table from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
19 typedef enum _BASESRV_API_NUMBER
20 {
21 BasepCreateProcess = BASESRV_FIRST_API_NUMBER,
22 BasepCreateThread,
23 BasepGetTempFile,
24 BasepExitProcess,
25 BasepDebugProcess,
26 BasepCheckVDM,
27 BasepUpdateVDMEntry,
28 BasepGetNextVDMCommand,
29 BasepExitVDM,
30 BasepIsFirstVDM,
31 BasepGetVDMExitCode,
32 BasepSetReenterCount,
33 BasepSetProcessShutdownParam,
34 BasepGetProcessShutdownParam,
35 BasepNlsSetUserInfo,
36 BasepNlsSetMultipleUserInfo,
37 BasepNlsCreateSection,
38 BasepSetVDMCurDirs,
39 BasepGetVDMCurDirs,
40 BasepBatNotification,
41 BasepRegisterWowExec,
42 BasepSoundSentryNotification,
43 BasepRefreshIniFileMapping,
44 BasepDefineDosDevice,
45 BasepSetTermsrvAppInstallMode,
46 BasepNlsUpdateCacheCount,
47 BasepSetTermsrvClientTimeZone,
48 BasepSxsCreateActivationContext,
49 BasepRegisterThread,
50 BasepNlsGetUserInfo,
51 BasepMaxApiNumber
52 } BASESRV_API_NUMBER, *PBASESRV_API_NUMBER;
53
54
55 typedef struct _BASESRV_API_CONNECTINFO
56 {
57 ULONG ExpectedVersion;
58 HANDLE DefaultObjectDirectory;
59 ULONG WindowsVersion;
60 ULONG CurrentVersion;
61 ULONG DebugFlags;
62 WCHAR WindowsDirectory[MAX_PATH];
63 WCHAR WindowsSystemDirectory[MAX_PATH];
64 } BASESRV_API_CONNECTINFO, *PBASESRV_API_CONNECTINFO;
65
66 #define BASESRV_VERSION 0x10000
67
68
69 typedef struct _BASE_SXS_CREATEPROCESS_MSG
70 {
71 ULONG Flags;
72 ULONG ProcessParameterFlags;
73 HANDLE FileHandle;
74 UNICODE_STRING SxsWin32ExePath;
75 UNICODE_STRING SxsNtExePath;
76 SIZE_T OverrideManifestOffset;
77 ULONG OverrideManifestSize;
78 SIZE_T OverridePolicyOffset;
79 ULONG OverridePolicySize;
80 PVOID PEManifestAddress;
81 ULONG PEManifestSize;
82 UNICODE_STRING CultureFallbacks;
83 ULONG Unknown[7];
84 UNICODE_STRING AssemblyName;
85 } BASE_SXS_CREATEPROCESS_MSG, *PBASE_SXS_CREATEPROCESS_MSG;
86
87 typedef struct
88 {
89 //
90 // NT-type structure (BASE_CREATEPROCESS_MSG)
91 //
92 HANDLE ProcessHandle;
93 HANDLE ThreadHandle;
94 CLIENT_ID ClientId;
95 ULONG CreationFlags;
96 ULONG VdmBinaryType;
97 ULONG VdmTask;
98 HANDLE hVDM;
99 BASE_SXS_CREATEPROCESS_MSG Sxs;
100 PVOID PebAddressNative;
101 ULONG PebAddressWow64;
102 USHORT ProcessorArchitecture;
103 } BASE_CREATE_PROCESS, *PBASE_CREATE_PROCESS;
104
105 typedef struct
106 {
107 CLIENT_ID ClientId;
108 HANDLE ThreadHandle;
109 } BASE_CREATE_THREAD, *PBASE_CREATE_THREAD;
110
111 typedef struct
112 {
113 UINT UniqueID;
114 } BASE_GET_TEMP_FILE, *PBASE_GET_TEMP_FILE;
115
116 typedef struct
117 {
118 UINT uExitCode;
119 } BASE_EXIT_PROCESS, *PBASE_EXIT_PROCESS;
120
121 typedef struct
122 {
123 ULONG iTask;
124 HANDLE ConsoleHandle;
125 ULONG BinaryType;
126 HANDLE WaitObjectForParent;
127 HANDLE StdIn;
128 HANDLE StdOut;
129 HANDLE StdErr;
130 ULONG CodePage;
131 ULONG dwCreationFlags;
132 PCHAR CmdLine;
133 PCHAR AppName;
134 PCHAR PifFile;
135 PCHAR CurDirectory;
136 PCHAR Env;
137 ULONG EnvLen;
138 LPSTARTUPINFOA StartupInfo;
139 PCHAR Desktop;
140 ULONG DesktopLen;
141 PCHAR Title;
142 ULONG TitleLen;
143 PCHAR Reserved;
144 ULONG ReservedLen;
145 USHORT CmdLen;
146 USHORT AppLen;
147 USHORT PifLen;
148 USHORT CurDirectoryLen;
149 USHORT CurDrive;
150 USHORT VDMState;
151 } BASE_CHECK_VDM, *PBASE_CHECK_VDM;
152
153 typedef struct
154 {
155 ULONG iTask;
156 ULONG BinaryType;
157 HANDLE ConsoleHandle;
158 HANDLE VDMProcessHandle;
159 HANDLE WaitObjectForParent;
160 USHORT EntryIndex;
161 USHORT VDMCreationState;
162 } BASE_UPDATE_VDM_ENTRY, *PBASE_UPDATE_VDM_ENTRY;
163
164 typedef struct
165 {
166 ULONG iTask;
167 HANDLE ConsoleHandle;
168 HANDLE WaitObjectForVDM;
169 HANDLE StdIn;
170 HANDLE StdOut;
171 HANDLE StdErr;
172 ULONG CodePage;
173 ULONG dwCreationFlags;
174 ULONG ExitCode;
175 PCHAR CmdLine;
176 PCHAR AppName;
177 PCHAR PifFile;
178 PCHAR CurDirectory;
179 PCHAR Env;
180 ULONG EnvLen;
181 LPSTARTUPINFOA StartupInfo;
182 PCHAR Desktop;
183 ULONG DesktopLen;
184 PCHAR Title;
185 ULONG TitleLen;
186 PCHAR Reserved;
187 ULONG ReservedLen;
188 USHORT CurrentDrive;
189 USHORT CmdLen;
190 USHORT AppLen;
191 USHORT PifLen;
192 USHORT CurDirectoryLen;
193 USHORT VDMState;
194 ULONG fComingFromBat;
195 } BASE_GET_NEXT_VDM_COMMAND, *PBASE_GET_NEXT_VDM_COMMAND;
196
197 typedef struct
198 {
199 HANDLE ConsoleHandle;
200 ULONG iWowTask;
201 HANDLE WaitObjectForVDM;
202 } BASE_EXIT_VDM, *PBASE_EXIT_VDM;
203
204 typedef struct
205 {
206 ULONG FirstVDM;
207 } BASE_IS_FIRST_VDM, *PBASE_IS_FIRST_VDM;
208
209 typedef struct
210 {
211 HANDLE ConsoleHandle;
212 HANDLE hParent;
213 ULONG ExitCode;
214 } BASE_GET_VDM_EXIT_CODE, *PBASE_GET_VDM_EXIT_CODE;
215
216 typedef struct
217 {
218 HANDLE ConsoleHandle;
219 ULONG fIncDec;
220 } BASE_SET_REENTER_COUNT, *PBASE_SET_REENTER_COUNT;
221
222 typedef struct
223 {
224 ULONG ShutdownLevel;
225 ULONG ShutdownFlags;
226 } BASE_GETSET_PROCESS_SHUTDOWN_PARAMS, *PBASE_GETSET_PROCESS_SHUTDOWN_PARAMS;
227
228 typedef struct
229 {
230 HANDLE ConsoleHandle;
231 PCHAR lpszzCurDirs;
232 ULONG cchCurDirs;
233 } BASE_GETSET_VDM_CURDIRS, *PBASE_GETSET_VDM_CURDIRS;
234
235 typedef struct
236 {
237 HANDLE ConsoleHandle;
238 ULONG fBeginEnd;
239 } BASE_BAT_NOTIFICATION, *PBASE_BAT_NOTIFICATION;
240
241 typedef struct
242 {
243 HANDLE hwndWowExec;
244 } BASE_REGISTER_WOWEXEC, *PBASE_REGISTER_WOWEXEC;
245
246 typedef struct
247 {
248 ULONG VideoMode;
249 } BASE_SOUND_SENTRY, *PBASE_SOUND_SENTRY;
250
251 typedef struct
252 {
253 UNICODE_STRING IniFileName;
254 } BASE_REFRESH_INIFILE_MAPPING, *PBASE_REFRESH_INIFILE_MAPPING;
255
256 typedef struct
257 {
258 ULONG Flags;
259 UNICODE_STRING DeviceName;
260 UNICODE_STRING TargetPath;
261 } BASE_DEFINE_DOS_DEVICE, *PBASE_DEFINE_DOS_DEVICE;
262
263 typedef struct _BASE_API_MESSAGE
264 {
265 PORT_MESSAGE Header;
266
267 PCSR_CAPTURE_BUFFER CsrCaptureData;
268 CSR_API_NUMBER ApiNumber;
269 NTSTATUS Status;
270 ULONG Reserved;
271 union
272 {
273 BASE_CREATE_PROCESS CreateProcessRequest;
274 BASE_CREATE_THREAD CreateThreadRequest;
275 BASE_GET_TEMP_FILE GetTempFileRequest;
276 BASE_EXIT_PROCESS ExitProcessRequest;
277 BASE_CHECK_VDM CheckVDMRequest;
278 BASE_UPDATE_VDM_ENTRY UpdateVDMEntryRequest;
279 BASE_GET_NEXT_VDM_COMMAND GetNextVDMCommandRequest;
280 BASE_EXIT_VDM ExitVDMRequest;
281 BASE_IS_FIRST_VDM IsFirstVDMRequest;
282 BASE_GET_VDM_EXIT_CODE GetVDMExitCodeRequest;
283 BASE_SET_REENTER_COUNT SetReenterCountRequest;
284 BASE_GETSET_PROCESS_SHUTDOWN_PARAMS ShutdownParametersRequest;
285 BASE_GETSET_VDM_CURDIRS VDMCurrentDirsRequest;
286 BASE_BAT_NOTIFICATION BatNotificationRequest;
287 BASE_REGISTER_WOWEXEC RegisterWowExecRequest;
288 BASE_SOUND_SENTRY SoundSentryRequest;
289 BASE_REFRESH_INIFILE_MAPPING RefreshIniFileMappingRequest;
290 BASE_DEFINE_DOS_DEVICE DefineDosDeviceRequest;
291 } Data;
292 } BASE_API_MESSAGE, *PBASE_API_MESSAGE;
293
294 // Check that a BASE_API_MESSAGE can hold in a CSR_API_MESSAGE.
295 CHECK_API_MSG_SIZE(BASE_API_MESSAGE);
296
297 #endif // _BASEMSG_H
298
299 /* EOF */