[NTDLL/KERNEL32/CSRSRV/WIN32K/USER32/WIN32CSR]
[reactos.git] / include / reactos / subsys / csrss / csrss.h
1 /***************************** CSRSS Data ***********************************/
2
3 #ifndef __INCLUDE_CSRSS_CSRSS_H
4 #define __INCLUDE_CSRSS_CSRSS_H
5
6 #define CSR_NATIVE 0x0000
7 #define CSR_CONSOLE 0x0001
8 #define CSR_GUI 0x0002
9 #define CONSOLE_INPUT_MODE_VALID (0x0f)
10 #define CONSOLE_OUTPUT_MODE_VALID (0x03)
11
12
13 #define CSR_CSRSS_SECTION_SIZE (65536)
14
15 typedef VOID (CALLBACK *PCONTROLDISPATCHER)(DWORD);
16
17 typedef struct
18 {
19 ULONG Dummy;
20 } CSRSS_CONNECT_PROCESS, *PCSRSS_CONNECT_PROCESS;
21
22 typedef struct _BASE_SXS_CREATEPROCESS_MSG
23 {
24 ULONG Flags;
25 ULONG ProcessParameterFlags;
26 HANDLE FileHandle;
27 UNICODE_STRING SxsWin32ExePath;
28 UNICODE_STRING SxsNtExePath;
29 SIZE_T OverrideManifestOffset;
30 ULONG OverrideManifestSize;
31 SIZE_T OverridePolicyOffset;
32 ULONG OverridePolicySize;
33 PVOID PEManifestAddress;
34 ULONG PEManifestSize;
35 UNICODE_STRING CultureFallbacks;
36 ULONG Unknown[7];
37 UNICODE_STRING AssemblyName;
38 } BASE_SXS_CREATEPROCESS_MSG, *PBASE_SXS_CREATEPROCESS_MSG;
39
40 typedef struct
41 {
42 //
43 // NT-type structure (BASE_CREATEPROCESS_MSG)
44 //
45 HANDLE ProcessHandle;
46 HANDLE ThreadHandle;
47 CLIENT_ID ClientId;
48 ULONG CreationFlags;
49 ULONG VdmBinaryType;
50 ULONG VdmTask;
51 HANDLE hVDM;
52 BASE_SXS_CREATEPROCESS_MSG Sxs;
53 PVOID PebAddressNative;
54 ULONG PebAddressWow64;
55 USHORT ProcessorArchitecture;
56
57 //
58 // ReactOS Data
59 //
60 BOOL bInheritHandles;
61 } CSRSS_CREATE_PROCESS, *PCSRSS_CREATE_PROCESS;
62
63 typedef struct
64 {
65 CLIENT_ID ClientId;
66 HANDLE ThreadHandle;
67 } CSRSS_CREATE_THREAD, *PCSRSS_CREATE_THREAD;
68
69 typedef struct
70 {
71 UINT uExitCode;
72 } CSRSS_TERMINATE_PROCESS, *PCSRSS_TERMINATE_PROCESS;
73
74 typedef struct
75 {
76 USHORT nMaxIds;
77 PDWORD ProcessId;
78 ULONG nProcessIdsTotal;
79 } CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
80
81 #include "csrcons.h"
82
83 typedef struct
84 {
85 HANDLE UniqueThread;
86 CLIENT_ID Cid;
87 } CSRSS_IDENTIFY_ALERTABLE_THREAD, *PCSRSS_IDENTIFY_ALERTABLE_THREAD;
88
89 typedef struct
90 {
91 HANDLE ProcessId;
92 } CSRSS_REGISTER_SERVICES_PROCESS, *PCSRSS_REGISTER_SERVICES_PROCESS;
93
94 typedef struct
95 {
96 UINT Flags;
97 DWORD Reserved;
98 } CSRSS_EXIT_REACTOS, *PCSRSS_EXIT_REACTOS;
99
100 typedef struct
101 {
102 DWORD Level;
103 DWORD Flags;
104 } CSRSS_SET_SHUTDOWN_PARAMETERS, *PCSRSS_SET_SHUTDOWN_PARAMETERS;
105
106 typedef struct
107 {
108 DWORD Level;
109 DWORD Flags;
110 } CSRSS_GET_SHUTDOWN_PARAMETERS, *PCSRSS_GET_SHUTDOWN_PARAMETERS;
111
112 typedef struct
113 {
114 HANDLE Handle;
115 } CSRSS_CLOSE_HANDLE, *PCSRSS_CLOSE_HANDLE;
116
117 typedef struct
118 {
119 HANDLE Handle;
120 } CSRSS_VERIFY_HANDLE, *PCSRSS_VERIFY_HANDLE;
121
122 typedef struct
123 {
124 HANDLE Handle;
125 DWORD Access;
126 BOOL Inheritable;
127 DWORD Options;
128 } CSRSS_DUPLICATE_HANDLE, *PCSRSS_DUPLICATE_HANDLE;
129
130 typedef struct
131 {
132 HDESK DesktopHandle;
133 } CSRSS_CREATE_DESKTOP, *PCSRSS_CREATE_DESKTOP;
134
135 typedef struct
136 {
137 HWND DesktopWindow;
138 ULONG Width;
139 ULONG Height;
140 } CSRSS_SHOW_DESKTOP, *PCSRSS_SHOW_DESKTOP;
141
142 typedef struct
143 {
144 HWND DesktopWindow;
145 } CSRSS_HIDE_DESKTOP, *PCSRSS_HIDE_DESKTOP;
146
147 typedef struct
148 {
149 HWND LogonNotifyWindow;
150 } CSRSS_SET_LOGON_NOTIFY_WINDOW, *PCSRSS_SET_LOGON_NOTIFY_WINDOW;
151
152 typedef struct
153 {
154 HANDLE ProcessId;
155 BOOL Register;
156 } CSRSS_REGISTER_LOGON_PROCESS, *PCSRSS_REGISTER_LOGON_PROCESS;
157
158 typedef struct
159 {
160 HANDLE InputWaitHandle;
161 } CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
162
163 typedef struct
164 {
165 UINT UniqueID;
166 } CSRSS_GET_TEMP_FILE, *PCSRSS_GET_TEMP_FILE;
167
168 typedef struct
169 {
170 UNICODE_STRING DeviceName;
171 UNICODE_STRING TargetName;
172 DWORD dwFlags;
173 } CSRSS_DEFINE_DOS_DEVICE, *PCSRSS_DEFINE_DOS_DEVICE;
174
175 typedef struct
176 {
177 ULONG VideoMode;
178 } CSRSS_SOUND_SENTRY, *PCSRSS_SOUND_SENTRY;
179
180 typedef struct
181 {
182 ULONG iTask;
183 ULONG BinaryType;
184 HANDLE ConsoleHandle;
185 HANDLE VDMProcessHandle;
186 HANDLE WaitObjectForParent;
187 USHORT EntryIndex;
188 USHORT VDMCreationState;
189 } CSRSS_UPDATE_VDM_ENTRY, *PCSRSS_UPDATE_VDM_ENTRY;
190
191 typedef struct
192 {
193 HANDLE ConsoleHandle;
194 HANDLE hParent;
195 ULONG ExitCode;
196 } CSRSS_GET_VDM_EXIT_CODE, *PCSRSS_GET_VDM_EXIT_CODE;
197
198 typedef struct
199 {
200 ULONG iTask;
201 HANDLE ConsoleHandle;
202 ULONG BinaryType;
203 HANDLE WaitObjectForParent;
204 HANDLE StdIn;
205 HANDLE StdOut;
206 HANDLE StdErr;
207 ULONG CodePage;
208 ULONG dwCreationFlags;
209 PCHAR CmdLine;
210 PCHAR appName;
211 PCHAR PifFile;
212 PCHAR CurDirectory;
213 PCHAR Env;
214 ULONG EnvLen;
215 PVOID StartupInfo;
216 PCHAR Desktop;
217 ULONG DesktopLen;
218 PCHAR Title;
219 ULONG TitleLen;
220 PCHAR Reserved;
221 ULONG ReservedLen;
222 USHORT CmdLen;
223 USHORT AppLen;
224 USHORT PifLen;
225 USHORT CurDirectoryLen;
226 USHORT CurDrive;
227 USHORT VDMState;
228 } CSRSS_CHECK_VDM, *PCSRSS_CHECK_VDM;
229
230 #define CSR_API_MESSAGE_HEADER_SIZE(Type) (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type))
231 #define CSRSS_MAX_WRITE_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE))
232 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR))
233 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB))
234 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
235 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
236
237 #define CREATE_PROCESS (0x0)
238 #define TERMINATE_PROCESS (0x1)
239 #define WRITE_CONSOLE (0x2)
240 #define READ_CONSOLE (0x3)
241 #define ALLOC_CONSOLE (0x4)
242 #define FREE_CONSOLE (0x5)
243 #define CONNECT_PROCESS (0x6)
244 #define SCREEN_BUFFER_INFO (0x7)
245 #define SET_CURSOR (0x8)
246 #define FILL_OUTPUT (0x9)
247 #define READ_INPUT (0xA)
248 #define WRITE_CONSOLE_OUTPUT_CHAR (0xB)
249 #define WRITE_CONSOLE_OUTPUT_ATTRIB (0xC)
250 #define FILL_OUTPUT_ATTRIB (0xD)
251 #define GET_CURSOR_INFO (0xE)
252 #define SET_CURSOR_INFO (0xF)
253 #define SET_ATTRIB (0x10)
254 #define GET_CONSOLE_MODE (0x11)
255 #define SET_CONSOLE_MODE (0x12)
256 #define CREATE_SCREEN_BUFFER (0x13)
257 #define SET_SCREEN_BUFFER (0x14)
258 #define SET_TITLE (0x15)
259 #define GET_TITLE (0x16)
260 #define WRITE_CONSOLE_OUTPUT (0x17)
261 #define FLUSH_INPUT_BUFFER (0x18)
262 #define SCROLL_CONSOLE_SCREEN_BUFFER (0x19)
263 #define READ_CONSOLE_OUTPUT_CHAR (0x1A)
264 #define READ_CONSOLE_OUTPUT_ATTRIB (0x1B)
265 #define GET_NUM_INPUT_EVENTS (0x1C)
266 #define REGISTER_SERVICES_PROCESS (0x1D)
267 #define EXIT_REACTOS (0x1E)
268 #define GET_SHUTDOWN_PARAMETERS (0x1F)
269 #define SET_SHUTDOWN_PARAMETERS (0x20)
270 #define PEEK_CONSOLE_INPUT (0x21)
271 #define READ_CONSOLE_OUTPUT (0x22)
272 #define WRITE_CONSOLE_INPUT (0x23)
273 #define GET_INPUT_HANDLE (0x24)
274 #define GET_OUTPUT_HANDLE (0x25)
275 #define CLOSE_HANDLE (0x26)
276 #define VERIFY_HANDLE (0x27)
277 #define DUPLICATE_HANDLE (0x28)
278 #define SETGET_CONSOLE_HW_STATE (0x29)
279 #define GET_CONSOLE_WINDOW (0x2A)
280 #define CREATE_DESKTOP (0x2B)
281 #define SHOW_DESKTOP (0x2C)
282 #define HIDE_DESKTOP (0x2D)
283 #define SET_CONSOLE_ICON (0x2E)
284 #define SET_LOGON_NOTIFY_WINDOW (0x2F)
285 #define REGISTER_LOGON_PROCESS (0x30)
286 #define GET_CONSOLE_CP (0x31)
287 #define SET_CONSOLE_CP (0x32)
288 #define GET_CONSOLE_OUTPUT_CP (0x33)
289 #define SET_CONSOLE_OUTPUT_CP (0x34)
290 #define GET_INPUT_WAIT_HANDLE (0x35)
291 #define GET_PROCESS_LIST (0x36)
292 #define START_SCREEN_SAVER (0x37)
293 #define ADD_CONSOLE_ALIAS (0x38)
294 #define GET_CONSOLE_ALIAS (0x39)
295 #define GET_ALL_CONSOLE_ALIASES (0x3A)
296 #define GET_ALL_CONSOLE_ALIASES_LENGTH (0x3B)
297 #define GET_CONSOLE_ALIASES_EXES (0x3C)
298 #define GET_CONSOLE_ALIASES_EXES_LENGTH (0x3D)
299 #define GENERATE_CTRL_EVENT (0x3E)
300 #define CREATE_THREAD (0x3F)
301 #define SET_SCREEN_BUFFER_SIZE (0x40)
302 #define GET_CONSOLE_SELECTION_INFO (0x41)
303 #define GET_COMMAND_HISTORY_LENGTH (0x42)
304 #define GET_COMMAND_HISTORY (0x43)
305 #define EXPUNGE_COMMAND_HISTORY (0x44)
306 #define SET_HISTORY_NUMBER_COMMANDS (0x45)
307 #define GET_HISTORY_INFO (0x46)
308 #define SET_HISTORY_INFO (0x47)
309 #define GET_TEMP_FILE (0x48)
310 #define DEFINE_DOS_DEVICE (0x49)
311 #define SOUND_SENTRY (0x50)
312 #define UPDATE_VDM_ENTRY (0x51)
313 #define GET_VDM_EXIT_CODE (0x52)
314 #define CHECK_VDM (0x53)
315
316
317 typedef struct _NLS_USER_INFO
318 {
319 WCHAR iCountry[80];
320 WCHAR sCountry[80];
321 WCHAR sList[80];
322 WCHAR iMeasure[80];
323 WCHAR iPaperSize[80];
324 WCHAR sDecimal[80];
325 WCHAR sThousand[80];
326 WCHAR sGrouping[80];
327 WCHAR iDigits[80];
328 WCHAR iLZero[80];
329 WCHAR iNegNumber[80];
330 WCHAR sNativeDigits[80];
331 WCHAR iDigitSubstitution[80];
332 WCHAR sCurrency[80];
333 WCHAR sMonDecSep[80];
334 WCHAR sMonThouSep[80];
335 WCHAR sMonGrouping[80];
336 WCHAR iCurrDigits[80];
337 WCHAR iCurrency[80];
338 WCHAR iNegCurr[80];
339 WCHAR sPosSign[80];
340 WCHAR sNegSign[80];
341 WCHAR sTimeFormat[80];
342 WCHAR s1159[80];
343 WCHAR s2359[80];
344 WCHAR sShortDate[80];
345 WCHAR sYearMonth[80];
346 WCHAR sLongDate[80];
347 WCHAR iCalType[80];
348 WCHAR iFirstDay[80];
349 WCHAR iFirstWeek[80];
350 WCHAR sLocale[80];
351 WCHAR sLocaleName[85];
352 LCID UserLocaleId;
353 LUID InteractiveUserLuid;
354 CHAR InteractiveUserSid[68]; // SECURITY_MAX_SID_SIZE to make ROS happy
355 ULONG ulCacheUpdateCount;
356 } NLS_USER_INFO, *PNLS_USER_INFO;
357
358
359 typedef struct _BASE_STATIC_SERVER_DATA
360 {
361 UNICODE_STRING WindowsDirectory;
362 UNICODE_STRING WindowsSystemDirectory;
363 UNICODE_STRING NamedObjectDirectory;
364 USHORT WindowsMajorVersion;
365 USHORT WindowsMinorVersion;
366 USHORT BuildNumber;
367 USHORT CSDNumber;
368 USHORT RCNumber;
369 WCHAR CSDVersion[128];
370 SYSTEM_BASIC_INFORMATION SysInfo;
371 SYSTEM_TIMEOFDAY_INFORMATION TimeOfDay;
372 PVOID IniFileMapping;
373 NLS_USER_INFO NlsUserInfo;
374 BOOLEAN DefaultSeparateVDM;
375 BOOLEAN IsWowTaskReady;
376 UNICODE_STRING WindowsSys32x86Directory;
377 BOOLEAN fTermsrvAppInstallMode;
378 TIME_ZONE_INFORMATION tziTermsrvClientTimeZone;
379 KSYSTEM_TIME ktTermsrvClientBias;
380 ULONG TermsrvClientTimeZoneId;
381 BOOLEAN LUIDDeviceMapsEnabled;
382 ULONG TermsrvClientTimeZoneChangeNum;
383 } BASE_STATIC_SERVER_DATA, *PBASE_STATIC_SERVER_DATA;
384
385
386 /* Types used in the new CSR. Temporarly here for proper compile of NTDLL */
387 // Not used at the moment...
388 typedef enum _CSR_SRV_API_NUMBER
389 {
390 CsrpClientConnect,
391 CsrpThreadConnect,
392 CsrpProfileControl,
393 CsrpIdentifyAlertable,
394 CsrpSetPriorityClass,
395 CsrpMaxApiNumber
396 } CSR_SRV_API_NUMBER, *PCSR_SRV_API_NUMBER;
397
398 #endif /* __INCLUDE_CSRSS_CSRSS_H */