1 #ifndef __INCLUDE_CSRSS_CSRSS_H
2 #define __INCLUDE_CSRSS_CSRSS_H
6 #include <ddk/ntddblue.h>
7 #include <ntos/keyboard.h>
9 #define CSR_PRIORITY_CLASS_NORMAL (0x10)
10 #define CSR_PRIORITY_CLASS_IDLE (0x20)
11 #define CSR_PRIORITY_CLASS_HIGH (0x40)
12 #define CSR_PRIORITY_CLASS_REALTIME (0x80)
14 #define CSR_CSRSS_SECTION_SIZE (65536)
18 } CSRSS_CONNECT_PROCESS_REQUEST, PCSRSS_CONNECT_PROCESS_REQUEST;
22 } CSRSS_CONNECT_PROCESS_REPLY, PCSRSS_CONNECT_PROCESS_REPLY;
28 } CSRSS_CREATE_PROCESS_REQUEST, *PCSRSS_CREATE_PROCESS_REQUEST;
34 } CSRSS_CREATE_PROCESS_REPLY, *PCSRSS_CREATE_PROCESS_REPLY;
39 ULONG NrCharactersToWrite;
41 } CSRSS_WRITE_CONSOLE_REQUEST, *PCSRSS_WRITE_CONSOLE_REQUEST;
45 ULONG NrCharactersWritten;
46 } CSRSS_WRITE_CONSOLE_REPLY, *PCSRSS_WRITE_CONSOLE_REPLY;
51 WORD NrCharactersToRead;
52 WORD nCharsCanBeDeleted; // number of chars already in buffer that can be backspaced
53 } CSRSS_READ_CONSOLE_REQUEST, *PCSRSS_READ_CONSOLE_REQUEST;
58 ULONG NrCharactersRead;
60 } CSRSS_READ_CONSOLE_REPLY, *PCSRSS_READ_CONSOLE_REPLY;
66 } CSRSS_ALLOC_CONSOLE_REPLY, *PCSRSS_ALLOC_CONSOLE_REPLY;
71 } CSRSS_SCREEN_BUFFER_INFO_REQUEST, *PCSRSS_SCREEN_BUFFER_INFO_REQUEST;
75 CONSOLE_SCREEN_BUFFER_INFO Info;
76 } CSRSS_SCREEN_BUFFER_INFO_REPLY, *PCSRSS_SCREEN_BUFFER_INFO_REPLY;
82 } CSRSS_SET_CURSOR_REQUEST, *PCSRSS_SET_CURSOR_REQUEST;
90 } CSRSS_FILL_OUTPUT_REQUEST, *PCSRSS_FILL_OUTPUT_REQUEST;
98 } CSRSS_FILL_OUTPUT_ATTRIB_REQUEST, *PCSRSS_FILL_OUTPUT_ATTRIB_REQUEST;
102 HANDLE ConsoleHandle;
103 } CSRSS_READ_INPUT_REQUEST, *PCSRSS_READ_INPUT_REQUEST;
110 } CSRSS_READ_INPUT_REPLY, *PCSRSS_READ_INPUT_REPLY;
114 HANDLE ConsoleHandle;
118 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST;
123 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REPLY, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REPLY;
127 HANDLE ConsoleHandle;
131 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST;
136 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REPLY, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REPLY;
140 HANDLE ConsoleHandle;
141 } CSRSS_GET_CURSOR_INFO_REQUEST, *PCSRSS_GET_CURSOR_INFO_REQUEST;
145 CONSOLE_CURSOR_INFO Info;
146 } CSRSS_GET_CURSOR_INFO_REPLY, *PCSRSS_GET_CURSOR_INFO_REPLY;
150 HANDLE ConsoleHandle;
151 CONSOLE_CURSOR_INFO Info;
152 } CSRSS_SET_CURSOR_INFO_REQUEST, *PCSRSS_SET_CURSOR_INFO_REQUEST;
156 HANDLE ConsoleHandle;
158 } CSRSS_SET_ATTRIB_REQUEST, *PCSRSS_SET_ATTRIB_REQUEST;
162 HANDLE ConsoleHandle;
164 } CSRSS_SET_CONSOLE_MODE_REQUEST, *PCSRSS_SET_CONSOLE_MODE_REQUEST;
168 HANDLE ConsoleHandle;
169 } CSRSS_GET_CONSOLE_MODE_REQUEST, *PCSRSS_GET_CONSOLE_MODE_REQUEST;
174 } CSRSS_GET_CONSOLE_MODE_REPLY, *PCSRSS_GET_CONSOLE_MODE_REPLY;
178 /* may want to add some parameters here someday */
179 } CSRSS_CREATE_SCREEN_BUFFER_REQUEST, *PCSRSS_CREATE_SCREEN_BUFFER_REQUEST;
183 HANDLE OutputHandle; /* handle to newly created screen buffer */
184 } CSRSS_CREATE_SCREEN_BUFFER_REPLY, *PCSRSS_CREATE_SCREEN_BUFFER_REPLY;
188 HANDLE OutputHandle; /* handle to screen buffer to switch to */
189 } CSRSS_SET_ACTIVE_SCREEN_BUFFER_REQUEST, *PCSRSS_SET_ACTIVE_SCREEN_BUFFER_REQUEST;
194 } CSRSS_IDENTIFY_ALERTABLE_THREAD_REQUEST, * PCSRSS_IDENTIFY_ALERTABLE_THREAD_REQUEST;
199 } CSRSS_IDENTIFY_ALERTABLE_THREAD_REPLY, * PCSRSS_IDENTIFY_ALERTABLE_THREAD_REPLY;
206 } CSRSS_SET_TITLE_REQUEST, *PCSRSS_SET_TITLE_REQUEST;
210 HANDLE ConsoleHandle;
211 } CSRSS_GET_TITLE_REQUEST, *PCSRSS_GET_TITLE_REQUEST;
215 HANDLE ConsoleHandle;
218 } CSRSS_GET_TITLE_REPLY, *PCSRSS_GET_TITLE_REPLY;
222 HANDLE ConsoleHandle;
225 SMALL_RECT WriteRegion;
227 } CSRSS_WRITE_CONSOLE_OUTPUT_REQUEST, *PCSRSS_WRITE_CONSOLE_OUTPUT_REQUEST;
231 SMALL_RECT WriteRegion;
232 } CSRSS_WRITE_CONSOLE_OUTPUT_REPLY, *PCSRSS_WRITE_CONSOLE_OUTPUT_REPLY;
237 } CSRSS_FLUSH_INPUT_BUFFER_REQUEST, *PCSRSS_FLUSH_INPUT_BUFFER_REQUEST;
241 HANDLE ConsoleHandle;
242 SMALL_RECT ScrollRectangle;
243 BOOLEAN UseClipRectangle;
244 SMALL_RECT ClipRectangle;
245 COORD DestinationOrigin;
247 } CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER_REQUEST, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER_REQUEST;
251 HANDLE ConsoleHandle;
252 DWORD NumCharsToRead;
254 }CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST;
260 }CSRSS_READ_CONSOLE_OUTPUT_CHAR_REPLY, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR_REPLY;
264 HANDLE ConsoleHandle;
265 DWORD NumAttrsToRead;
267 }CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST;
273 }CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REPLY, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REPLY;
277 HANDLE ConsoleHandle;
278 }CSRSS_GET_NUM_INPUT_EVENTS_REQUEST, *PCSRSS_GET_NUM_INPUT_EVENTS_REQUEST;
282 DWORD NumInputEvents;
283 }CSRSS_GET_NUM_INPUT_EVENTS_REPLY, *PCSRSS_GET_NUM_INPUT_EVENTS_REPLY;
288 } CSRSS_REGISTER_SERVICES_PROCESS_REQUEST, *PCSRSS_REGISTER_SERVICES_PROCESS_REQUEST;
294 } CSRSS_EXIT_REACTOS_REQUEST, *PCSRSS_EXIT_REACTOS_REQUEST;
300 } CSRSS_SHUTDOWN_PARAMETERS, *PCSRSS_SHUTDOWN_PARAMETERS;
304 HANDLE ConsoleHandle;
306 INPUT_RECORD* InputRecord;
307 } CSRSS_PEEK_CONSOLE_INPUT_REQUEST, *PCSRSS_PEEK_CONSOLE_INPUT_REQUEST;
312 } CSRSS_PEEK_CONSOLE_INPUT_REPLY, *PCSRSS_PEEK_CONSOLE_INPUT_REPLY;
315 #define CSRSS_MAX_WRITE_CONSOLE_REQUEST \
316 (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(CSRSS_WRITE_CONSOLE_REQUEST))
318 #define CSRSS_MAX_SET_TITLE_REQUEST (MAX_MESSAGE_DATA - sizeof( HANDLE ) - sizeof( DWORD ) - sizeof( ULONG ) - sizeof( LPC_MESSAGE_HEADER ))
320 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST ))
322 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB ((MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST )) / 2)
324 #define CSRSS_MAX_READ_CONSOLE_REQUEST (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_READ_CONSOLE_REQUEST ))
326 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST))
328 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST))
330 // FIXME: it should be 80. Is this a limit due to LPC msg size?
331 #define CSRSS_MAX_TITLE_LENGTH 50
333 #define CSRSS_CREATE_PROCESS (0x0)
334 #define CSRSS_TERMINATE_PROCESS (0x1)
335 #define CSRSS_WRITE_CONSOLE (0x2)
336 #define CSRSS_READ_CONSOLE (0x3)
337 #define CSRSS_ALLOC_CONSOLE (0x4)
338 #define CSRSS_FREE_CONSOLE (0x5)
339 #define CSRSS_CONNECT_PROCESS (0x6)
340 #define CSRSS_SCREEN_BUFFER_INFO (0x7)
341 #define CSRSS_SET_CURSOR (0x8)
342 #define CSRSS_FILL_OUTPUT (0x9)
343 #define CSRSS_READ_INPUT (0xA)
344 #define CSRSS_WRITE_CONSOLE_OUTPUT_CHAR (0xB)
345 #define CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB (0xC)
346 #define CSRSS_FILL_OUTPUT_ATTRIB (0xD)
347 #define CSRSS_GET_CURSOR_INFO (0xE)
348 #define CSRSS_SET_CURSOR_INFO (0xF)
349 #define CSRSS_SET_ATTRIB (0x10)
350 #define CSRSS_GET_MODE (0x11)
351 #define CSRSS_SET_MODE (0x12)
352 #define CSRSS_CREATE_SCREEN_BUFFER (0x13)
353 #define CSRSS_SET_SCREEN_BUFFER (0x14)
354 #define CSRSS_SET_TITLE (0x15)
355 #define CSRSS_GET_TITLE (0x16)
356 #define CSRSS_WRITE_CONSOLE_OUTPUT (0x17)
357 #define CSRSS_FLUSH_INPUT_BUFFER (0x18)
358 #define CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER (0x19)
359 #define CSRSS_READ_CONSOLE_OUTPUT_CHAR (0x1A)
360 #define CSRSS_READ_CONSOLE_OUTPUT_ATTRIB (0x1B)
361 #define CSRSS_GET_NUM_INPUT_EVENTS (0x1C)
362 #define CSRSS_REGISTER_SERVICES_PROCESS (0x1D)
363 #define CSRSS_EXIT_REACTOS (0x1E)
364 #define CSRSS_GET_SHUTDOWN_PARAMETERS (0x1F)
365 #define CSRSS_SET_SHUTDOWN_PARAMETERS (0x20)
366 #define CSRSS_PEEK_CONSOLE_INPUT (0x21)
369 /* Keep in sync with definition below. */
370 #define CSRSS_REQUEST_HEADER_SIZE (sizeof(LPC_MESSAGE_HEADER) + sizeof(ULONG))
374 LPC_MESSAGE_HEADER Header;
378 CSRSS_CREATE_PROCESS_REQUEST CreateProcessRequest;
379 CSRSS_CONNECT_PROCESS_REQUEST ConnectRequest;
380 CSRSS_WRITE_CONSOLE_REQUEST WriteConsoleRequest;
381 CSRSS_READ_CONSOLE_REQUEST ReadConsoleRequest;
382 CSRSS_SCREEN_BUFFER_INFO_REQUEST ScreenBufferInfoRequest;
383 CSRSS_SET_CURSOR_REQUEST SetCursorRequest;
384 CSRSS_FILL_OUTPUT_REQUEST FillOutputRequest;
385 CSRSS_READ_INPUT_REQUEST ReadInputRequest;
386 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST WriteConsoleOutputCharRequest;
387 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST WriteConsoleOutputAttribRequest;
388 CSRSS_FILL_OUTPUT_ATTRIB_REQUEST FillOutputAttribRequest;
389 CSRSS_SET_CURSOR_INFO_REQUEST SetCursorInfoRequest;
390 CSRSS_GET_CURSOR_INFO_REQUEST GetCursorInfoRequest;
391 CSRSS_SET_ATTRIB_REQUEST SetAttribRequest;
392 CSRSS_SET_CONSOLE_MODE_REQUEST SetConsoleModeRequest;
393 CSRSS_GET_CONSOLE_MODE_REQUEST GetConsoleModeRequest;
394 CSRSS_CREATE_SCREEN_BUFFER_REQUEST CreateScreenBufferRequest;
395 CSRSS_SET_ACTIVE_SCREEN_BUFFER_REQUEST SetActiveScreenBufferRequest;
396 CSRSS_SET_TITLE_REQUEST SetTitleRequest;
397 CSRSS_GET_TITLE_REQUEST GetTitleRequest;
398 CSRSS_WRITE_CONSOLE_OUTPUT_REQUEST WriteConsoleOutputRequest;
399 CSRSS_FLUSH_INPUT_BUFFER_REQUEST FlushInputBufferRequest;
400 CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER_REQUEST
401 ScrollConsoleScreenBufferRequest;
402 CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST ReadConsoleOutputCharRequest;
403 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST ReadConsoleOutputAttribRequest;
404 CSRSS_GET_NUM_INPUT_EVENTS_REQUEST GetNumInputEventsRequest;
405 CSRSS_REGISTER_SERVICES_PROCESS_REQUEST RegisterServicesProcessRequest;
406 CSRSS_EXIT_REACTOS_REQUEST ExitReactosRequest;
407 CSRSS_SHUTDOWN_PARAMETERS SetShutdownParametersRequest;
408 CSRSS_PEEK_CONSOLE_INPUT_REQUEST PeekConsoleInputRequest;
410 } CSRSS_API_REQUEST, *PCSRSS_API_REQUEST;
414 LPC_MESSAGE_HEADER Header;
418 CSRSS_CREATE_PROCESS_REPLY CreateProcessReply;
419 CSRSS_CONNECT_PROCESS_REPLY ConnectReply;
420 CSRSS_WRITE_CONSOLE_REPLY WriteConsoleReply;
421 CSRSS_READ_CONSOLE_REPLY ReadConsoleReply;
422 CSRSS_ALLOC_CONSOLE_REPLY AllocConsoleReply;
423 CSRSS_SCREEN_BUFFER_INFO_REPLY ScreenBufferInfoReply;
424 CSRSS_READ_INPUT_REPLY ReadInputReply;
425 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REPLY WriteConsoleOutputCharReply;
426 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REPLY WriteConsoleOutputAttribReply;
427 CSRSS_GET_CURSOR_INFO_REPLY GetCursorInfoReply;
428 CSRSS_GET_CONSOLE_MODE_REPLY GetConsoleModeReply;
429 CSRSS_CREATE_SCREEN_BUFFER_REPLY CreateScreenBufferReply;
430 CSRSS_GET_TITLE_REPLY GetTitleReply;
431 CSRSS_WRITE_CONSOLE_OUTPUT_REPLY WriteConsoleOutputReply;
432 CSRSS_READ_CONSOLE_OUTPUT_CHAR_REPLY ReadConsoleOutputCharReply;
433 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REPLY ReadConsoleOutputAttribReply;
434 CSRSS_GET_NUM_INPUT_EVENTS_REPLY GetNumInputEventsReply;
435 CSRSS_SHUTDOWN_PARAMETERS GetShutdownParametersReply;
436 CSRSS_PEEK_CONSOLE_INPUT_REPLY PeekConsoleInputReply;
438 } CSRSS_API_REPLY, *PCSRSS_API_REPLY;
440 #endif /* __INCLUDE_CSRSS_CSRSS_H */