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)
16 typedef __declspec(noreturn) VOID CALLBACK(*PCONTROLDISPATCHER)(DWORD);
20 } CSRSS_CONNECT_PROCESS_REQUEST, PCSRSS_CONNECT_PROCESS_REQUEST;
24 } CSRSS_CONNECT_PROCESS_REPLY, PCSRSS_CONNECT_PROCESS_REPLY;
30 PCONTROLDISPATCHER CtrlDispatcher;
31 } CSRSS_CREATE_PROCESS_REQUEST, *PCSRSS_CREATE_PROCESS_REQUEST;
37 } CSRSS_CREATE_PROCESS_REPLY, *PCSRSS_CREATE_PROCESS_REPLY;
42 ULONG NrCharactersToWrite;
44 } CSRSS_WRITE_CONSOLE_REQUEST, *PCSRSS_WRITE_CONSOLE_REQUEST;
48 ULONG NrCharactersWritten;
49 } CSRSS_WRITE_CONSOLE_REPLY, *PCSRSS_WRITE_CONSOLE_REPLY;
54 WORD NrCharactersToRead;
55 WORD nCharsCanBeDeleted; /* number of chars already in buffer that can be backspaced */
56 } CSRSS_READ_CONSOLE_REQUEST, *PCSRSS_READ_CONSOLE_REQUEST;
61 ULONG NrCharactersRead;
63 } CSRSS_READ_CONSOLE_REPLY, *PCSRSS_READ_CONSOLE_REPLY;
67 PCONTROLDISPATCHER CtrlDispatcher;
68 } CSRSS_ALLOC_CONSOLE_REQUEST, *PCSRSS_ALLOC_CONSOLE_REQUEST;
74 } CSRSS_ALLOC_CONSOLE_REPLY, *PCSRSS_ALLOC_CONSOLE_REPLY;
79 } CSRSS_SCREEN_BUFFER_INFO_REQUEST, *PCSRSS_SCREEN_BUFFER_INFO_REQUEST;
83 CONSOLE_SCREEN_BUFFER_INFO Info;
84 } CSRSS_SCREEN_BUFFER_INFO_REPLY, *PCSRSS_SCREEN_BUFFER_INFO_REPLY;
90 } CSRSS_SET_CURSOR_REQUEST, *PCSRSS_SET_CURSOR_REQUEST;
98 } CSRSS_FILL_OUTPUT_REQUEST, *PCSRSS_FILL_OUTPUT_REQUEST;
102 HANDLE ConsoleHandle;
106 } CSRSS_FILL_OUTPUT_ATTRIB_REQUEST, *PCSRSS_FILL_OUTPUT_ATTRIB_REQUEST;
110 HANDLE ConsoleHandle;
111 } CSRSS_READ_INPUT_REQUEST, *PCSRSS_READ_INPUT_REQUEST;
118 } CSRSS_READ_INPUT_REPLY, *PCSRSS_READ_INPUT_REPLY;
122 HANDLE ConsoleHandle;
126 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST;
131 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REPLY, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REPLY;
135 HANDLE ConsoleHandle;
139 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST;
144 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REPLY, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REPLY;
148 HANDLE ConsoleHandle;
149 } CSRSS_GET_CURSOR_INFO_REQUEST, *PCSRSS_GET_CURSOR_INFO_REQUEST;
153 CONSOLE_CURSOR_INFO Info;
154 } CSRSS_GET_CURSOR_INFO_REPLY, *PCSRSS_GET_CURSOR_INFO_REPLY;
158 HANDLE ConsoleHandle;
159 CONSOLE_CURSOR_INFO Info;
160 } CSRSS_SET_CURSOR_INFO_REQUEST, *PCSRSS_SET_CURSOR_INFO_REQUEST;
164 HANDLE ConsoleHandle;
166 } CSRSS_SET_ATTRIB_REQUEST, *PCSRSS_SET_ATTRIB_REQUEST;
170 HANDLE ConsoleHandle;
172 } CSRSS_SET_CONSOLE_MODE_REQUEST, *PCSRSS_SET_CONSOLE_MODE_REQUEST;
176 HANDLE ConsoleHandle;
177 } CSRSS_GET_CONSOLE_MODE_REQUEST, *PCSRSS_GET_CONSOLE_MODE_REQUEST;
182 } CSRSS_GET_CONSOLE_MODE_REPLY, *PCSRSS_GET_CONSOLE_MODE_REPLY;
186 /* may want to add some parameters here someday */
187 } CSRSS_CREATE_SCREEN_BUFFER_REQUEST, *PCSRSS_CREATE_SCREEN_BUFFER_REQUEST;
191 HANDLE OutputHandle; /* handle to newly created screen buffer */
192 } CSRSS_CREATE_SCREEN_BUFFER_REPLY, *PCSRSS_CREATE_SCREEN_BUFFER_REPLY;
196 HANDLE OutputHandle; /* handle to screen buffer to switch to */
197 } CSRSS_SET_ACTIVE_SCREEN_BUFFER_REQUEST, *PCSRSS_SET_ACTIVE_SCREEN_BUFFER_REQUEST;
202 } CSRSS_IDENTIFY_ALERTABLE_THREAD_REQUEST, * PCSRSS_IDENTIFY_ALERTABLE_THREAD_REQUEST;
207 } CSRSS_IDENTIFY_ALERTABLE_THREAD_REPLY, * PCSRSS_IDENTIFY_ALERTABLE_THREAD_REPLY;
214 } CSRSS_SET_TITLE_REQUEST, *PCSRSS_SET_TITLE_REQUEST;
218 HANDLE ConsoleHandle;
219 } CSRSS_GET_TITLE_REQUEST, *PCSRSS_GET_TITLE_REQUEST;
223 HANDLE ConsoleHandle;
226 } CSRSS_GET_TITLE_REPLY, *PCSRSS_GET_TITLE_REPLY;
230 HANDLE ConsoleHandle;
233 SMALL_RECT WriteRegion;
235 } CSRSS_WRITE_CONSOLE_OUTPUT_REQUEST, *PCSRSS_WRITE_CONSOLE_OUTPUT_REQUEST;
239 SMALL_RECT WriteRegion;
240 } CSRSS_WRITE_CONSOLE_OUTPUT_REPLY, *PCSRSS_WRITE_CONSOLE_OUTPUT_REPLY;
245 } CSRSS_FLUSH_INPUT_BUFFER_REQUEST, *PCSRSS_FLUSH_INPUT_BUFFER_REQUEST;
249 HANDLE ConsoleHandle;
250 SMALL_RECT ScrollRectangle;
251 BOOLEAN UseClipRectangle;
252 SMALL_RECT ClipRectangle;
253 COORD DestinationOrigin;
255 } CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER_REQUEST, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER_REQUEST;
259 HANDLE ConsoleHandle;
260 DWORD NumCharsToRead;
262 }CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST;
268 }CSRSS_READ_CONSOLE_OUTPUT_CHAR_REPLY, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR_REPLY;
272 HANDLE ConsoleHandle;
273 DWORD NumAttrsToRead;
275 }CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST;
281 }CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REPLY, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REPLY;
285 HANDLE ConsoleHandle;
286 }CSRSS_GET_NUM_INPUT_EVENTS_REQUEST, *PCSRSS_GET_NUM_INPUT_EVENTS_REQUEST;
290 DWORD NumInputEvents;
291 }CSRSS_GET_NUM_INPUT_EVENTS_REPLY, *PCSRSS_GET_NUM_INPUT_EVENTS_REPLY;
296 } CSRSS_REGISTER_SERVICES_PROCESS_REQUEST, *PCSRSS_REGISTER_SERVICES_PROCESS_REQUEST;
302 } CSRSS_EXIT_REACTOS_REQUEST, *PCSRSS_EXIT_REACTOS_REQUEST;
308 } CSRSS_SHUTDOWN_PARAMETERS, *PCSRSS_SHUTDOWN_PARAMETERS;
312 HANDLE ConsoleHandle;
314 INPUT_RECORD* InputRecord;
315 } CSRSS_PEEK_CONSOLE_INPUT_REQUEST, *PCSRSS_PEEK_CONSOLE_INPUT_REQUEST;
320 } CSRSS_PEEK_CONSOLE_INPUT_REPLY, *PCSRSS_PEEK_CONSOLE_INPUT_REPLY;
324 HANDLE ConsoleHandle;
327 SMALL_RECT ReadRegion;
329 } CSRSS_READ_CONSOLE_OUTPUT_REQUEST, *PCSRSS_READ_CONSOLE_OUTPUT_REQUEST;
333 SMALL_RECT ReadRegion;
334 } CSRSS_READ_CONSOLE_OUTPUT_REPLY, *PCSRSS_READ_CONSOLE_OUTPUT_REPLY;
338 HANDLE ConsoleHandle;
340 INPUT_RECORD* InputRecord;
341 } CSRSS_WRITE_CONSOLE_INPUT_REQUEST, *PCSRSS_WRITE_CONSOLE_INPUT_REQUEST;
346 } CSRSS_WRITE_CONSOLE_INPUT_REPLY, *PCSRSS_WRITE_CONSOLE_INPUT_REPLY;
351 } CSRSS_GET_INPUT_HANDLE_REPLY, *PCSRSS_GET_INPUT_HANDLE_REPLY;
356 } CSRSS_GET_OUTPUT_HANDLE_REPLY, *PCSRSS_GET_OUTPUT_HANDLE_REPLY;
361 } CSRSS_CLOSE_HANDLE_REQUEST, *PCSRSS_CLOSE_HANDLE_REQUEST;
366 } CSRSS_VERIFY_HANDLE_REQUEST, *PCSRSS_VERIFY_HANDLE_REQUEST;
372 } CSRSS_DUPLICATE_HANDLE_REQUEST, *PCSRSS_DUPLICATE_HANDLE_REQUEST;
377 } CSRSS_DUPLICATE_HANDLE_REPLY, *PCSRSS_DUPLICATE_HANDLE_REPLY;
379 #define CONSOLE_HARDWARE_STATE_GET 0
380 #define CONSOLE_HARDWARE_STATE_SET 1
382 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
383 #define CONSOLE_HARDWARE_STATE_DIRECT 1
387 HANDLE ConsoleHandle;
388 DWORD SetGet; /* 0=get; 1=set */
391 } CSRSS_CONSOLE_HARDWARE_STATE, *PCSRSS_CONSOLE_HARDWARE_STATE;
395 HANDLE ConsoleHandle;
397 } CSRSS_CONSOLE_WINDOW, *PCSRSS_CONSOLE_WINDOW;
399 #define CSRSS_MAX_WRITE_CONSOLE_REQUEST \
400 (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(CSRSS_WRITE_CONSOLE_REQUEST))
402 #define CSRSS_MAX_SET_TITLE_REQUEST (MAX_MESSAGE_DATA - sizeof( HANDLE ) - sizeof( DWORD ) - sizeof( ULONG ) - sizeof( LPC_MESSAGE ))
404 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST ))
406 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB ((MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST )) / 2)
408 #define CSRSS_MAX_READ_CONSOLE_REQUEST (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_READ_CONSOLE_REQUEST ))
410 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST))
412 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST))
414 /* WCHARs, not bytes! */
415 #define CSRSS_MAX_TITLE_LENGTH 80
417 #define CSRSS_CREATE_PROCESS (0x0)
418 #define CSRSS_TERMINATE_PROCESS (0x1)
419 #define CSRSS_WRITE_CONSOLE (0x2)
420 #define CSRSS_READ_CONSOLE (0x3)
421 #define CSRSS_ALLOC_CONSOLE (0x4)
422 #define CSRSS_FREE_CONSOLE (0x5)
423 #define CSRSS_CONNECT_PROCESS (0x6)
424 #define CSRSS_SCREEN_BUFFER_INFO (0x7)
425 #define CSRSS_SET_CURSOR (0x8)
426 #define CSRSS_FILL_OUTPUT (0x9)
427 #define CSRSS_READ_INPUT (0xA)
428 #define CSRSS_WRITE_CONSOLE_OUTPUT_CHAR (0xB)
429 #define CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB (0xC)
430 #define CSRSS_FILL_OUTPUT_ATTRIB (0xD)
431 #define CSRSS_GET_CURSOR_INFO (0xE)
432 #define CSRSS_SET_CURSOR_INFO (0xF)
433 #define CSRSS_SET_ATTRIB (0x10)
434 #define CSRSS_GET_MODE (0x11)
435 #define CSRSS_SET_MODE (0x12)
436 #define CSRSS_CREATE_SCREEN_BUFFER (0x13)
437 #define CSRSS_SET_SCREEN_BUFFER (0x14)
438 #define CSRSS_SET_TITLE (0x15)
439 #define CSRSS_GET_TITLE (0x16)
440 #define CSRSS_WRITE_CONSOLE_OUTPUT (0x17)
441 #define CSRSS_FLUSH_INPUT_BUFFER (0x18)
442 #define CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER (0x19)
443 #define CSRSS_READ_CONSOLE_OUTPUT_CHAR (0x1A)
444 #define CSRSS_READ_CONSOLE_OUTPUT_ATTRIB (0x1B)
445 #define CSRSS_GET_NUM_INPUT_EVENTS (0x1C)
446 #define CSRSS_REGISTER_SERVICES_PROCESS (0x1D)
447 #define CSRSS_EXIT_REACTOS (0x1E)
448 #define CSRSS_GET_SHUTDOWN_PARAMETERS (0x1F)
449 #define CSRSS_SET_SHUTDOWN_PARAMETERS (0x20)
450 #define CSRSS_PEEK_CONSOLE_INPUT (0x21)
451 #define CSRSS_READ_CONSOLE_OUTPUT (0x22)
452 #define CSRSS_WRITE_CONSOLE_INPUT (0x23)
453 #define CSRSS_GET_INPUT_HANDLE (0x24)
454 #define CSRSS_GET_OUTPUT_HANDLE (0x25)
455 #define CSRSS_CLOSE_HANDLE (0x26)
456 #define CSRSS_VERIFY_HANDLE (0x27)
457 #define CSRSS_DUPLICATE_HANDLE (0x28)
458 #define CSRSS_SETGET_CONSOLE_HW_STATE (0x29)
459 #define CSRSS_GET_CONSOLE_WINDOW (0x2A)
461 /* Keep in sync with definition below. */
462 #define CSRSS_REQUEST_HEADER_SIZE (sizeof(LPC_MESSAGE) + sizeof(ULONG))
470 CSRSS_CREATE_PROCESS_REQUEST CreateProcessRequest;
471 CSRSS_CONNECT_PROCESS_REQUEST ConnectRequest;
472 CSRSS_WRITE_CONSOLE_REQUEST WriteConsoleRequest;
473 CSRSS_READ_CONSOLE_REQUEST ReadConsoleRequest;
474 CSRSS_ALLOC_CONSOLE_REQUEST AllocConsoleRequest;
475 CSRSS_SCREEN_BUFFER_INFO_REQUEST ScreenBufferInfoRequest;
476 CSRSS_SET_CURSOR_REQUEST SetCursorRequest;
477 CSRSS_FILL_OUTPUT_REQUEST FillOutputRequest;
478 CSRSS_READ_INPUT_REQUEST ReadInputRequest;
479 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST WriteConsoleOutputCharRequest;
480 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST WriteConsoleOutputAttribRequest;
481 CSRSS_FILL_OUTPUT_ATTRIB_REQUEST FillOutputAttribRequest;
482 CSRSS_SET_CURSOR_INFO_REQUEST SetCursorInfoRequest;
483 CSRSS_GET_CURSOR_INFO_REQUEST GetCursorInfoRequest;
484 CSRSS_SET_ATTRIB_REQUEST SetAttribRequest;
485 CSRSS_SET_CONSOLE_MODE_REQUEST SetConsoleModeRequest;
486 CSRSS_GET_CONSOLE_MODE_REQUEST GetConsoleModeRequest;
487 CSRSS_CREATE_SCREEN_BUFFER_REQUEST CreateScreenBufferRequest;
488 CSRSS_SET_ACTIVE_SCREEN_BUFFER_REQUEST SetActiveScreenBufferRequest;
489 CSRSS_SET_TITLE_REQUEST SetTitleRequest;
490 CSRSS_GET_TITLE_REQUEST GetTitleRequest;
491 CSRSS_WRITE_CONSOLE_OUTPUT_REQUEST WriteConsoleOutputRequest;
492 CSRSS_FLUSH_INPUT_BUFFER_REQUEST FlushInputBufferRequest;
493 CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER_REQUEST
494 ScrollConsoleScreenBufferRequest;
495 CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST ReadConsoleOutputCharRequest;
496 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST ReadConsoleOutputAttribRequest;
497 CSRSS_GET_NUM_INPUT_EVENTS_REQUEST GetNumInputEventsRequest;
498 CSRSS_REGISTER_SERVICES_PROCESS_REQUEST RegisterServicesProcessRequest;
499 CSRSS_EXIT_REACTOS_REQUEST ExitReactosRequest;
500 CSRSS_SHUTDOWN_PARAMETERS SetShutdownParametersRequest;
501 CSRSS_PEEK_CONSOLE_INPUT_REQUEST PeekConsoleInputRequest;
502 CSRSS_READ_CONSOLE_OUTPUT_REQUEST ReadConsoleOutputRequest;
503 CSRSS_WRITE_CONSOLE_INPUT_REQUEST WriteConsoleInputRequest;
504 CSRSS_CLOSE_HANDLE_REQUEST CloseHandleRequest;
505 CSRSS_VERIFY_HANDLE_REQUEST VerifyHandleRequest;
506 CSRSS_DUPLICATE_HANDLE_REQUEST DuplicateHandleRequest;
507 CSRSS_CONSOLE_HARDWARE_STATE ConsoleHardwareStateRequest;
508 CSRSS_CONSOLE_WINDOW ConsoleWindowRequest;
510 } CSRSS_API_REQUEST, *PCSRSS_API_REQUEST;
518 CSRSS_CREATE_PROCESS_REPLY CreateProcessReply;
519 CSRSS_CONNECT_PROCESS_REPLY ConnectReply;
520 CSRSS_WRITE_CONSOLE_REPLY WriteConsoleReply;
521 CSRSS_READ_CONSOLE_REPLY ReadConsoleReply;
522 CSRSS_ALLOC_CONSOLE_REPLY AllocConsoleReply;
523 CSRSS_SCREEN_BUFFER_INFO_REPLY ScreenBufferInfoReply;
524 CSRSS_READ_INPUT_REPLY ReadInputReply;
525 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REPLY WriteConsoleOutputCharReply;
526 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REPLY WriteConsoleOutputAttribReply;
527 CSRSS_GET_CURSOR_INFO_REPLY GetCursorInfoReply;
528 CSRSS_GET_CONSOLE_MODE_REPLY GetConsoleModeReply;
529 CSRSS_CREATE_SCREEN_BUFFER_REPLY CreateScreenBufferReply;
530 CSRSS_GET_TITLE_REPLY GetTitleReply;
531 CSRSS_WRITE_CONSOLE_OUTPUT_REPLY WriteConsoleOutputReply;
532 CSRSS_READ_CONSOLE_OUTPUT_CHAR_REPLY ReadConsoleOutputCharReply;
533 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REPLY ReadConsoleOutputAttribReply;
534 CSRSS_GET_NUM_INPUT_EVENTS_REPLY GetNumInputEventsReply;
535 CSRSS_SHUTDOWN_PARAMETERS GetShutdownParametersReply;
536 CSRSS_PEEK_CONSOLE_INPUT_REPLY PeekConsoleInputReply;
537 CSRSS_READ_CONSOLE_OUTPUT_REPLY ReadConsoleOutputReply;
538 CSRSS_WRITE_CONSOLE_INPUT_REPLY WriteConsoleInputReply;
539 CSRSS_GET_INPUT_HANDLE_REPLY GetInputHandleReply;
540 CSRSS_GET_OUTPUT_HANDLE_REPLY GetOutputHandleReply;
541 CSRSS_DUPLICATE_HANDLE_REPLY DuplicateHandleReply;
542 CSRSS_CONSOLE_HARDWARE_STATE ConsoleHardwareStateReply;
543 CSRSS_CONSOLE_WINDOW ConsoleWindowReply;
545 } CSRSS_API_REPLY, *PCSRSS_API_REPLY;
547 #endif /* __INCLUDE_CSRSS_CSRSS_H */