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;
343 } CSRSS_GET_INPUT_HANDLE_REPLY, *PCSRSS_GET_INPUT_HANDLE_REPLY;
348 } CSRSS_GET_OUTPUT_HANDLE_REPLY, *PCSRSS_GET_OUTPUT_HANDLE_REPLY;
353 } CSRSS_CLOSE_HANDLE_REQUEST, *PCSRSS_CLOSE_HANDLE_REQUEST;
358 } CSRSS_VERIFY_HANDLE_REQUEST, *PCSRSS_VERIFY_HANDLE_REQUEST;
364 } CSRSS_DUPLICATE_HANDLE_REQUEST, *PCSRSS_DUPLICATE_HANDLE_REQUEST;
369 } CSRSS_DUPLICATE_HANDLE_REPLY, *PCSRSS_DUPLICATE_HANDLE_REPLY;
371 #define CSRSS_MAX_WRITE_CONSOLE_REQUEST \
372 (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(CSRSS_WRITE_CONSOLE_REQUEST))
374 #define CSRSS_MAX_SET_TITLE_REQUEST (MAX_MESSAGE_DATA - sizeof( HANDLE ) - sizeof( DWORD ) - sizeof( ULONG ) - sizeof( LPC_MESSAGE ))
376 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST ))
378 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB ((MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST )) / 2)
380 #define CSRSS_MAX_READ_CONSOLE_REQUEST (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_READ_CONSOLE_REQUEST ))
382 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST))
384 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST))
386 // WCHARs, not bytes!
387 #define CSRSS_MAX_TITLE_LENGTH 80
389 #define CSRSS_CREATE_PROCESS (0x0)
390 #define CSRSS_TERMINATE_PROCESS (0x1)
391 #define CSRSS_WRITE_CONSOLE (0x2)
392 #define CSRSS_READ_CONSOLE (0x3)
393 #define CSRSS_ALLOC_CONSOLE (0x4)
394 #define CSRSS_FREE_CONSOLE (0x5)
395 #define CSRSS_CONNECT_PROCESS (0x6)
396 #define CSRSS_SCREEN_BUFFER_INFO (0x7)
397 #define CSRSS_SET_CURSOR (0x8)
398 #define CSRSS_FILL_OUTPUT (0x9)
399 #define CSRSS_READ_INPUT (0xA)
400 #define CSRSS_WRITE_CONSOLE_OUTPUT_CHAR (0xB)
401 #define CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB (0xC)
402 #define CSRSS_FILL_OUTPUT_ATTRIB (0xD)
403 #define CSRSS_GET_CURSOR_INFO (0xE)
404 #define CSRSS_SET_CURSOR_INFO (0xF)
405 #define CSRSS_SET_ATTRIB (0x10)
406 #define CSRSS_GET_MODE (0x11)
407 #define CSRSS_SET_MODE (0x12)
408 #define CSRSS_CREATE_SCREEN_BUFFER (0x13)
409 #define CSRSS_SET_SCREEN_BUFFER (0x14)
410 #define CSRSS_SET_TITLE (0x15)
411 #define CSRSS_GET_TITLE (0x16)
412 #define CSRSS_WRITE_CONSOLE_OUTPUT (0x17)
413 #define CSRSS_FLUSH_INPUT_BUFFER (0x18)
414 #define CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER (0x19)
415 #define CSRSS_READ_CONSOLE_OUTPUT_CHAR (0x1A)
416 #define CSRSS_READ_CONSOLE_OUTPUT_ATTRIB (0x1B)
417 #define CSRSS_GET_NUM_INPUT_EVENTS (0x1C)
418 #define CSRSS_REGISTER_SERVICES_PROCESS (0x1D)
419 #define CSRSS_EXIT_REACTOS (0x1E)
420 #define CSRSS_GET_SHUTDOWN_PARAMETERS (0x1F)
421 #define CSRSS_SET_SHUTDOWN_PARAMETERS (0x20)
422 #define CSRSS_PEEK_CONSOLE_INPUT (0x21)
423 #define CSRSS_READ_CONSOLE_OUTPUT (0x22)
424 #define CSRSS_WRITE_CONSOLE_INPUT (0x23)
425 #define CSRSS_GET_INPUT_HANDLE (0x24)
426 #define CSRSS_GET_OUTPUT_HANDLE (0x25)
427 #define CSRSS_CLOSE_HANDLE (0x26)
428 #define CSRSS_VERIFY_HANDLE (0x27)
429 #define CSRSS_DUPLICATE_HANDLE (0x28)
431 /* Keep in sync with definition below. */
432 #define CSRSS_REQUEST_HEADER_SIZE (sizeof(LPC_MESSAGE) + sizeof(ULONG))
440 CSRSS_CREATE_PROCESS_REQUEST CreateProcessRequest;
441 CSRSS_CONNECT_PROCESS_REQUEST ConnectRequest;
442 CSRSS_WRITE_CONSOLE_REQUEST WriteConsoleRequest;
443 CSRSS_READ_CONSOLE_REQUEST ReadConsoleRequest;
444 CSRSS_SCREEN_BUFFER_INFO_REQUEST ScreenBufferInfoRequest;
445 CSRSS_SET_CURSOR_REQUEST SetCursorRequest;
446 CSRSS_FILL_OUTPUT_REQUEST FillOutputRequest;
447 CSRSS_READ_INPUT_REQUEST ReadInputRequest;
448 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST WriteConsoleOutputCharRequest;
449 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST WriteConsoleOutputAttribRequest;
450 CSRSS_FILL_OUTPUT_ATTRIB_REQUEST FillOutputAttribRequest;
451 CSRSS_SET_CURSOR_INFO_REQUEST SetCursorInfoRequest;
452 CSRSS_GET_CURSOR_INFO_REQUEST GetCursorInfoRequest;
453 CSRSS_SET_ATTRIB_REQUEST SetAttribRequest;
454 CSRSS_SET_CONSOLE_MODE_REQUEST SetConsoleModeRequest;
455 CSRSS_GET_CONSOLE_MODE_REQUEST GetConsoleModeRequest;
456 CSRSS_CREATE_SCREEN_BUFFER_REQUEST CreateScreenBufferRequest;
457 CSRSS_SET_ACTIVE_SCREEN_BUFFER_REQUEST SetActiveScreenBufferRequest;
458 CSRSS_SET_TITLE_REQUEST SetTitleRequest;
459 CSRSS_GET_TITLE_REQUEST GetTitleRequest;
460 CSRSS_WRITE_CONSOLE_OUTPUT_REQUEST WriteConsoleOutputRequest;
461 CSRSS_FLUSH_INPUT_BUFFER_REQUEST FlushInputBufferRequest;
462 CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER_REQUEST
463 ScrollConsoleScreenBufferRequest;
464 CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST ReadConsoleOutputCharRequest;
465 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST ReadConsoleOutputAttribRequest;
466 CSRSS_GET_NUM_INPUT_EVENTS_REQUEST GetNumInputEventsRequest;
467 CSRSS_REGISTER_SERVICES_PROCESS_REQUEST RegisterServicesProcessRequest;
468 CSRSS_EXIT_REACTOS_REQUEST ExitReactosRequest;
469 CSRSS_SHUTDOWN_PARAMETERS SetShutdownParametersRequest;
470 CSRSS_PEEK_CONSOLE_INPUT_REQUEST PeekConsoleInputRequest;
471 CSRSS_READ_CONSOLE_OUTPUT_REQUEST ReadConsoleOutputRequest;
472 CSRSS_WRITE_CONSOLE_INPUT_REQUEST WriteConsoleInputRequest;
473 CSRSS_CLOSE_HANDLE_REQUEST CloseHandleRequest;
474 CSRSS_VERIFY_HANDLE_REQUEST VerifyHandleRequest;
475 CSRSS_DUPLICATE_HANDLE_REQUEST DuplicateHandleRequest;
477 } CSRSS_API_REQUEST, *PCSRSS_API_REQUEST;
485 CSRSS_CREATE_PROCESS_REPLY CreateProcessReply;
486 CSRSS_CONNECT_PROCESS_REPLY ConnectReply;
487 CSRSS_WRITE_CONSOLE_REPLY WriteConsoleReply;
488 CSRSS_READ_CONSOLE_REPLY ReadConsoleReply;
489 CSRSS_ALLOC_CONSOLE_REPLY AllocConsoleReply;
490 CSRSS_SCREEN_BUFFER_INFO_REPLY ScreenBufferInfoReply;
491 CSRSS_READ_INPUT_REPLY ReadInputReply;
492 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REPLY WriteConsoleOutputCharReply;
493 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REPLY WriteConsoleOutputAttribReply;
494 CSRSS_GET_CURSOR_INFO_REPLY GetCursorInfoReply;
495 CSRSS_GET_CONSOLE_MODE_REPLY GetConsoleModeReply;
496 CSRSS_CREATE_SCREEN_BUFFER_REPLY CreateScreenBufferReply;
497 CSRSS_GET_TITLE_REPLY GetTitleReply;
498 CSRSS_WRITE_CONSOLE_OUTPUT_REPLY WriteConsoleOutputReply;
499 CSRSS_READ_CONSOLE_OUTPUT_CHAR_REPLY ReadConsoleOutputCharReply;
500 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REPLY ReadConsoleOutputAttribReply;
501 CSRSS_GET_NUM_INPUT_EVENTS_REPLY GetNumInputEventsReply;
502 CSRSS_SHUTDOWN_PARAMETERS GetShutdownParametersReply;
503 CSRSS_PEEK_CONSOLE_INPUT_REPLY PeekConsoleInputReply;
504 CSRSS_READ_CONSOLE_OUTPUT_REPLY ReadConsoleOutputReply;
505 CSRSS_WRITE_CONSOLE_INPUT_REPLY WriteConsoleInputReply;
506 CSRSS_GET_INPUT_HANDLE_REPLY GetInputHandleReply;
507 CSRSS_GET_OUTPUT_HANDLE_REPLY GetOutputHandleReply;
508 CSRSS_DUPLICATE_HANDLE_REPLY DuplicateHandleReply;
510 } CSRSS_API_REPLY, *PCSRSS_API_REPLY;
512 #endif /* __INCLUDE_CSRSS_CSRSS_H */