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;
316 HANDLE ConsoleHandle;
319 SMALL_RECT ReadRegion;
321 } CSRSS_READ_CONSOLE_OUTPUT_REQUEST, *PCSRSS_READ_CONSOLE_OUTPUT_REQUEST;
325 SMALL_RECT ReadRegion;
326 } CSRSS_READ_CONSOLE_OUTPUT_REPLY, *PCSRSS_READ_CONSOLE_OUTPUT_REPLY;
330 HANDLE ConsoleHandle;
332 INPUT_RECORD* InputRecord;
333 } CSRSS_WRITE_CONSOLE_INPUT_REQUEST, *PCSRSS_WRITE_CONSOLE_INPUT_REQUEST;
338 } CSRSS_WRITE_CONSOLE_INPUT_REPLY, *PCSRSS_WRITE_CONSOLE_INPUT_REPLY;
340 #define CSRSS_MAX_WRITE_CONSOLE_REQUEST \
341 (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(CSRSS_WRITE_CONSOLE_REQUEST))
343 #define CSRSS_MAX_SET_TITLE_REQUEST (MAX_MESSAGE_DATA - sizeof( HANDLE ) - sizeof( DWORD ) - sizeof( ULONG ) - sizeof( LPC_MESSAGE ))
345 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST ))
347 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB ((MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST )) / 2)
349 #define CSRSS_MAX_READ_CONSOLE_REQUEST (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_READ_CONSOLE_REQUEST ))
351 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST))
353 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST))
355 // FIXME: it should be 80. Is this a limit due to LPC msg size?
356 #define CSRSS_MAX_TITLE_LENGTH 50
358 #define CSRSS_CREATE_PROCESS (0x0)
359 #define CSRSS_TERMINATE_PROCESS (0x1)
360 #define CSRSS_WRITE_CONSOLE (0x2)
361 #define CSRSS_READ_CONSOLE (0x3)
362 #define CSRSS_ALLOC_CONSOLE (0x4)
363 #define CSRSS_FREE_CONSOLE (0x5)
364 #define CSRSS_CONNECT_PROCESS (0x6)
365 #define CSRSS_SCREEN_BUFFER_INFO (0x7)
366 #define CSRSS_SET_CURSOR (0x8)
367 #define CSRSS_FILL_OUTPUT (0x9)
368 #define CSRSS_READ_INPUT (0xA)
369 #define CSRSS_WRITE_CONSOLE_OUTPUT_CHAR (0xB)
370 #define CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB (0xC)
371 #define CSRSS_FILL_OUTPUT_ATTRIB (0xD)
372 #define CSRSS_GET_CURSOR_INFO (0xE)
373 #define CSRSS_SET_CURSOR_INFO (0xF)
374 #define CSRSS_SET_ATTRIB (0x10)
375 #define CSRSS_GET_MODE (0x11)
376 #define CSRSS_SET_MODE (0x12)
377 #define CSRSS_CREATE_SCREEN_BUFFER (0x13)
378 #define CSRSS_SET_SCREEN_BUFFER (0x14)
379 #define CSRSS_SET_TITLE (0x15)
380 #define CSRSS_GET_TITLE (0x16)
381 #define CSRSS_WRITE_CONSOLE_OUTPUT (0x17)
382 #define CSRSS_FLUSH_INPUT_BUFFER (0x18)
383 #define CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER (0x19)
384 #define CSRSS_READ_CONSOLE_OUTPUT_CHAR (0x1A)
385 #define CSRSS_READ_CONSOLE_OUTPUT_ATTRIB (0x1B)
386 #define CSRSS_GET_NUM_INPUT_EVENTS (0x1C)
387 #define CSRSS_REGISTER_SERVICES_PROCESS (0x1D)
388 #define CSRSS_EXIT_REACTOS (0x1E)
389 #define CSRSS_GET_SHUTDOWN_PARAMETERS (0x1F)
390 #define CSRSS_SET_SHUTDOWN_PARAMETERS (0x20)
391 #define CSRSS_PEEK_CONSOLE_INPUT (0x21)
392 #define CSRSS_READ_CONSOLE_OUTPUT (0x22)
393 #define CSRSS_WRITE_CONSOLE_INPUT (0x23)
395 /* Keep in sync with definition below. */
396 #define CSRSS_REQUEST_HEADER_SIZE (sizeof(LPC_MESSAGE) + sizeof(ULONG))
404 CSRSS_CREATE_PROCESS_REQUEST CreateProcessRequest;
405 CSRSS_CONNECT_PROCESS_REQUEST ConnectRequest;
406 CSRSS_WRITE_CONSOLE_REQUEST WriteConsoleRequest;
407 CSRSS_READ_CONSOLE_REQUEST ReadConsoleRequest;
408 CSRSS_SCREEN_BUFFER_INFO_REQUEST ScreenBufferInfoRequest;
409 CSRSS_SET_CURSOR_REQUEST SetCursorRequest;
410 CSRSS_FILL_OUTPUT_REQUEST FillOutputRequest;
411 CSRSS_READ_INPUT_REQUEST ReadInputRequest;
412 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST WriteConsoleOutputCharRequest;
413 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST WriteConsoleOutputAttribRequest;
414 CSRSS_FILL_OUTPUT_ATTRIB_REQUEST FillOutputAttribRequest;
415 CSRSS_SET_CURSOR_INFO_REQUEST SetCursorInfoRequest;
416 CSRSS_GET_CURSOR_INFO_REQUEST GetCursorInfoRequest;
417 CSRSS_SET_ATTRIB_REQUEST SetAttribRequest;
418 CSRSS_SET_CONSOLE_MODE_REQUEST SetConsoleModeRequest;
419 CSRSS_GET_CONSOLE_MODE_REQUEST GetConsoleModeRequest;
420 CSRSS_CREATE_SCREEN_BUFFER_REQUEST CreateScreenBufferRequest;
421 CSRSS_SET_ACTIVE_SCREEN_BUFFER_REQUEST SetActiveScreenBufferRequest;
422 CSRSS_SET_TITLE_REQUEST SetTitleRequest;
423 CSRSS_GET_TITLE_REQUEST GetTitleRequest;
424 CSRSS_WRITE_CONSOLE_OUTPUT_REQUEST WriteConsoleOutputRequest;
425 CSRSS_FLUSH_INPUT_BUFFER_REQUEST FlushInputBufferRequest;
426 CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER_REQUEST
427 ScrollConsoleScreenBufferRequest;
428 CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST ReadConsoleOutputCharRequest;
429 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST ReadConsoleOutputAttribRequest;
430 CSRSS_GET_NUM_INPUT_EVENTS_REQUEST GetNumInputEventsRequest;
431 CSRSS_REGISTER_SERVICES_PROCESS_REQUEST RegisterServicesProcessRequest;
432 CSRSS_EXIT_REACTOS_REQUEST ExitReactosRequest;
433 CSRSS_SHUTDOWN_PARAMETERS SetShutdownParametersRequest;
434 CSRSS_PEEK_CONSOLE_INPUT_REQUEST PeekConsoleInputRequest;
435 CSRSS_READ_CONSOLE_OUTPUT_REQUEST ReadConsoleOutputRequest;
436 CSRSS_WRITE_CONSOLE_INPUT_REQUEST WriteConsoleInputRequest;
438 } CSRSS_API_REQUEST, *PCSRSS_API_REQUEST;
446 CSRSS_CREATE_PROCESS_REPLY CreateProcessReply;
447 CSRSS_CONNECT_PROCESS_REPLY ConnectReply;
448 CSRSS_WRITE_CONSOLE_REPLY WriteConsoleReply;
449 CSRSS_READ_CONSOLE_REPLY ReadConsoleReply;
450 CSRSS_ALLOC_CONSOLE_REPLY AllocConsoleReply;
451 CSRSS_SCREEN_BUFFER_INFO_REPLY ScreenBufferInfoReply;
452 CSRSS_READ_INPUT_REPLY ReadInputReply;
453 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REPLY WriteConsoleOutputCharReply;
454 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REPLY WriteConsoleOutputAttribReply;
455 CSRSS_GET_CURSOR_INFO_REPLY GetCursorInfoReply;
456 CSRSS_GET_CONSOLE_MODE_REPLY GetConsoleModeReply;
457 CSRSS_CREATE_SCREEN_BUFFER_REPLY CreateScreenBufferReply;
458 CSRSS_GET_TITLE_REPLY GetTitleReply;
459 CSRSS_WRITE_CONSOLE_OUTPUT_REPLY WriteConsoleOutputReply;
460 CSRSS_READ_CONSOLE_OUTPUT_CHAR_REPLY ReadConsoleOutputCharReply;
461 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REPLY ReadConsoleOutputAttribReply;
462 CSRSS_GET_NUM_INPUT_EVENTS_REPLY GetNumInputEventsReply;
463 CSRSS_SHUTDOWN_PARAMETERS GetShutdownParametersReply;
464 CSRSS_PEEK_CONSOLE_INPUT_REPLY PeekConsoleInputReply;
465 CSRSS_READ_CONSOLE_OUTPUT_REPLY ReadConsoleOutputReply;
466 CSRSS_WRITE_CONSOLE_INPUT_REPLY WriteConsoleInputReply;
468 } CSRSS_API_REPLY, *PCSRSS_API_REPLY;
470 #endif /* __INCLUDE_CSRSS_CSRSS_H */