1 #ifndef __INCLUDE_CSRSS_CSRSS_H
2 #define __INCLUDE_CSRSS_CSRSS_H
4 #include <blue/ntddblue.h>
6 #define CSR_NATIVE 0x0000
7 #define CSR_CONSOLE 0x0001
11 typedef union _CSR_API_NUMBER
13 WORD Index; // CSRSS API number
14 WORD Subsystem; // 0=NTDLL;1=KERNEL32;2=KERNEL32
15 } CSR_API_NUMBER, *PCSR_API_NUMBER;
18 typedef ULONG CSR_API_NUMBER
;
20 #define MAKE_CSR_API(Number, Server) \
21 ((Server) << 16) + Number
23 #define CSR_CSRSS_SECTION_SIZE (65536)
25 typedef VOID (CALLBACK
*PCONTROLDISPATCHER
)(DWORD
);
30 } CSRSS_CONNECT_PROCESS
, *PCSRSS_CONNECT_PROCESS
;
37 } CSRSS_CREATE_PROCESS
, *PCSRSS_CREATE_PROCESS
;
42 } CSRSS_TERMINATE_PROCESS
, *PCSRSS_TERMINATE_PROCESS
;
47 ULONG nProcessIdsCopied
;
48 ULONG nProcessIdsTotal
;
50 } CSRSS_GET_PROCESS_LIST
, *PCSRSS_GET_PROCESS_LIST
;
56 ULONG NrCharactersToWrite
;
57 ULONG NrCharactersWritten
;
59 } CSRSS_WRITE_CONSOLE
, *PCSRSS_WRITE_CONSOLE
;
65 WORD NrCharactersToRead
;
66 WORD nCharsCanBeDeleted
; /* number of chars already in buffer that can be backspaced */
68 ULONG NrCharactersRead
;
70 } CSRSS_READ_CONSOLE
, *PCSRSS_READ_CONSOLE
;
74 PCONTROLDISPATCHER CtrlDispatcher
;
79 } CSRSS_ALLOC_CONSOLE
, *PCSRSS_ALLOC_CONSOLE
;
84 } CSRSS_FREE_CONSOLE
, *PCSRSS_FREE_CONSOLE
;
89 CONSOLE_SCREEN_BUFFER_INFO Info
;
90 } CSRSS_SCREEN_BUFFER_INFO
, *PCSRSS_SCREEN_BUFFER_INFO
;
96 } CSRSS_SET_CURSOR
, *PCSRSS_SET_CURSOR
;
100 HANDLE ConsoleHandle
;
109 ULONG NrCharactersWritten
;
110 } CSRSS_FILL_OUTPUT
, *PCSRSS_FILL_OUTPUT
;
114 HANDLE ConsoleHandle
;
118 } CSRSS_FILL_OUTPUT_ATTRIB
, *PCSRSS_FILL_OUTPUT_ATTRIB
;
122 HANDLE ConsoleHandle
;
127 } CSRSS_READ_INPUT
, *PCSRSS_READ_INPUT
;
131 HANDLE ConsoleHandle
;
136 ULONG NrCharactersWritten
;
138 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR
, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR
;
142 HANDLE ConsoleHandle
;
147 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB
, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB
;
151 HANDLE ConsoleHandle
;
152 CONSOLE_CURSOR_INFO Info
;
153 } CSRSS_GET_CURSOR_INFO
, *PCSRSS_GET_CURSOR_INFO
;
157 HANDLE ConsoleHandle
;
158 CONSOLE_CURSOR_INFO Info
;
159 } CSRSS_SET_CURSOR_INFO
, *PCSRSS_SET_CURSOR_INFO
;
163 HANDLE ConsoleHandle
;
165 } CSRSS_SET_ATTRIB
, *PCSRSS_SET_ATTRIB
;
169 HANDLE ConsoleHandle
;
171 } CSRSS_SET_CONSOLE_MODE
, *PCSRSS_SET_CONSOLE_MODE
;
175 HANDLE ConsoleHandle
;
177 } CSRSS_GET_CONSOLE_MODE
, *PCSRSS_GET_CONSOLE_MODE
;
181 /* may want to add some parameters here someday */
182 HANDLE OutputHandle
; /* handle to newly created screen buffer */
183 } CSRSS_CREATE_SCREEN_BUFFER
, *PCSRSS_CREATE_SCREEN_BUFFER
;
187 HANDLE OutputHandle
; /* handle to screen buffer to switch to */
188 } CSRSS_SET_SCREEN_BUFFER
, *PCSRSS_SET_SCREEN_BUFFER
;
194 } CSRSS_IDENTIFY_ALERTABLE_THREAD
, *PCSRSS_IDENTIFY_ALERTABLE_THREAD
;
201 } CSRSS_SET_TITLE
, *PCSRSS_SET_TITLE
;
205 HANDLE ConsoleHandle
;
208 } CSRSS_GET_TITLE
, *PCSRSS_GET_TITLE
;
212 HANDLE ConsoleHandle
;
216 SMALL_RECT WriteRegion
;
218 } CSRSS_WRITE_CONSOLE_OUTPUT
, *PCSRSS_WRITE_CONSOLE_OUTPUT
;
223 } CSRSS_FLUSH_INPUT_BUFFER
, *PCSRSS_FLUSH_INPUT_BUFFER
;
227 HANDLE ConsoleHandle
;
229 SMALL_RECT ScrollRectangle
;
230 BOOLEAN UseClipRectangle
;
231 SMALL_RECT ClipRectangle
;
232 COORD DestinationOrigin
;
234 } CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER
, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER
;
238 HANDLE ConsoleHandle
;
240 DWORD NumCharsToRead
;
245 }CSRSS_READ_CONSOLE_OUTPUT_CHAR
, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR
;
249 HANDLE ConsoleHandle
;
250 DWORD NumAttrsToRead
;
254 }CSRSS_READ_CONSOLE_OUTPUT_ATTRIB
, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB
;
258 HANDLE ConsoleHandle
;
259 DWORD NumInputEvents
;
260 }CSRSS_GET_NUM_INPUT_EVENTS
, *PCSRSS_GET_NUM_INPUT_EVENTS
;
265 } CSRSS_REGISTER_SERVICES_PROCESS
, *PCSRSS_REGISTER_SERVICES_PROCESS
;
271 } CSRSS_EXIT_REACTOS
, *PCSRSS_EXIT_REACTOS
;
277 } CSRSS_SET_SHUTDOWN_PARAMETERS
, *PCSRSS_SET_SHUTDOWN_PARAMETERS
;
283 } CSRSS_GET_SHUTDOWN_PARAMETERS
, *PCSRSS_GET_SHUTDOWN_PARAMETERS
;
287 HANDLE ConsoleHandle
;
290 INPUT_RECORD
* InputRecord
;
291 } CSRSS_PEEK_CONSOLE_INPUT
, *PCSRSS_PEEK_CONSOLE_INPUT
;
295 HANDLE ConsoleHandle
;
299 SMALL_RECT ReadRegion
;
301 } CSRSS_READ_CONSOLE_OUTPUT
, *PCSRSS_READ_CONSOLE_OUTPUT
;
305 HANDLE ConsoleHandle
;
308 INPUT_RECORD
* InputRecord
;
309 } CSRSS_WRITE_CONSOLE_INPUT
, *PCSRSS_WRITE_CONSOLE_INPUT
;
314 } CSRSS_GET_INPUT_HANDLE
, *PCSRSS_GET_INPUT_HANDLE
;
319 } CSRSS_GET_OUTPUT_HANDLE
, *PCSRSS_GET_OUTPUT_HANDLE
;
324 } CSRSS_CLOSE_HANDLE
, *PCSRSS_CLOSE_HANDLE
;
329 } CSRSS_VERIFY_HANDLE
, *PCSRSS_VERIFY_HANDLE
;
335 } CSRSS_DUPLICATE_HANDLE
, *PCSRSS_DUPLICATE_HANDLE
;
337 #define CONSOLE_HARDWARE_STATE_GET 0
338 #define CONSOLE_HARDWARE_STATE_SET 1
340 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
341 #define CONSOLE_HARDWARE_STATE_DIRECT 1
345 HANDLE ConsoleHandle
;
346 DWORD SetGet
; /* 0=get; 1=set */
348 } CSRSS_SETGET_CONSOLE_HW_STATE
, *PCSRSS_SETGET_CONSOLE_HW_STATE
;
353 } CSRSS_GET_CONSOLE_WINDOW
, *PCSRSS_GET_CONSOLE_WINDOW
;
358 } CSRSS_SET_CONSOLE_ICON
, *PCSRSS_SET_CONSOLE_ICON
;
363 } CSRSS_CREATE_DESKTOP
, *PCSRSS_CREATE_DESKTOP
;
370 } CSRSS_SHOW_DESKTOP
, *PCSRSS_SHOW_DESKTOP
;
375 } CSRSS_HIDE_DESKTOP
, *PCSRSS_HIDE_DESKTOP
;
379 HWND LogonNotifyWindow
;
380 } CSRSS_SET_LOGON_NOTIFY_WINDOW
, *PCSRSS_SET_LOGON_NOTIFY_WINDOW
;
386 } CSRSS_REGISTER_LOGON_PROCESS
, *PCSRSS_REGISTER_LOGON_PROCESS
;
391 } CSRSS_GET_CONSOLE_CP
, *PCSRSS_GET_CONSOLE_CP
;
396 } CSRSS_SET_CONSOLE_CP
, *PCSRSS_SET_CONSOLE_CP
;
401 } CSRSS_GET_CONSOLE_OUTPUT_CP
, *PCSRSS_GET_CONSOLE_OUTPUT_CP
;
406 } CSRSS_SET_CONSOLE_OUTPUT_CP
, *PCSRSS_SET_CONSOLE_OUTPUT_CP
;
410 HANDLE InputWaitHandle
;
411 } CSRSS_GET_INPUT_WAIT_HANDLE
, *PCSRSS_GET_INPUT_WAIT_HANDLE
;
413 #define CSR_API_MESSAGE_HEADER_SIZE(Type) (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type))
414 #define CSRSS_MAX_WRITE_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE))
415 #define CSRSS_MAX_SET_TITLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_SET_TITLE))
416 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR))
417 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB))
418 #define CSRSS_MAX_READ_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE))
419 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
420 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
422 /* WCHARs, not bytes! */
423 #define CSRSS_MAX_TITLE_LENGTH 80
425 #define CREATE_PROCESS (0x0)
426 #define TERMINATE_PROCESS (0x1)
427 #define WRITE_CONSOLE (0x2)
428 #define READ_CONSOLE (0x3)
429 #define ALLOC_CONSOLE (0x4)
430 #define FREE_CONSOLE (0x5)
431 #define CONNECT_PROCESS (0x6)
432 #define SCREEN_BUFFER_INFO (0x7)
433 #define SET_CURSOR (0x8)
434 #define FILL_OUTPUT (0x9)
435 #define READ_INPUT (0xA)
436 #define WRITE_CONSOLE_OUTPUT_CHAR (0xB)
437 #define WRITE_CONSOLE_OUTPUT_ATTRIB (0xC)
438 #define FILL_OUTPUT_ATTRIB (0xD)
439 #define GET_CURSOR_INFO (0xE)
440 #define SET_CURSOR_INFO (0xF)
441 #define SET_ATTRIB (0x10)
442 #define GET_CONSOLE_MODE (0x11)
443 #define SET_CONSOLE_MODE (0x12)
444 #define CREATE_SCREEN_BUFFER (0x13)
445 #define SET_SCREEN_BUFFER (0x14)
446 #define SET_TITLE (0x15)
447 #define GET_TITLE (0x16)
448 #define WRITE_CONSOLE_OUTPUT (0x17)
449 #define FLUSH_INPUT_BUFFER (0x18)
450 #define SCROLL_CONSOLE_SCREEN_BUFFER (0x19)
451 #define READ_CONSOLE_OUTPUT_CHAR (0x1A)
452 #define READ_CONSOLE_OUTPUT_ATTRIB (0x1B)
453 #define GET_NUM_INPUT_EVENTS (0x1C)
454 #define REGISTER_SERVICES_PROCESS (0x1D)
455 #define EXIT_REACTOS (0x1E)
456 #define GET_SHUTDOWN_PARAMETERS (0x1F)
457 #define SET_SHUTDOWN_PARAMETERS (0x20)
458 #define PEEK_CONSOLE_INPUT (0x21)
459 #define READ_CONSOLE_OUTPUT (0x22)
460 #define WRITE_CONSOLE_INPUT (0x23)
461 #define GET_INPUT_HANDLE (0x24)
462 #define GET_OUTPUT_HANDLE (0x25)
463 #define CLOSE_HANDLE (0x26)
464 #define VERIFY_HANDLE (0x27)
465 #define DUPLICATE_HANDLE (0x28)
466 #define SETGET_CONSOLE_HW_STATE (0x29)
467 #define GET_CONSOLE_WINDOW (0x2A)
468 #define CREATE_DESKTOP (0x2B)
469 #define SHOW_DESKTOP (0x2C)
470 #define HIDE_DESKTOP (0x2D)
471 #define SET_CONSOLE_ICON (0x2E)
472 #define SET_LOGON_NOTIFY_WINDOW (0x2F)
473 #define REGISTER_LOGON_PROCESS (0x30)
474 #define GET_CONSOLE_CP (0x31)
475 #define SET_CONSOLE_CP (0x32)
476 #define GET_CONSOLE_OUTPUT_CP (0x33)
477 #define SET_CONSOLE_OUTPUT_CP (0x34)
478 #define GET_INPUT_WAIT_HANDLE (0x35)
479 #define GET_PROCESS_LIST (0x36)
481 /* Keep in sync with definition below. */
482 #define CSRSS_HEADER_SIZE (sizeof(PORT_MESSAGE) + sizeof(ULONG) + sizeof(NTSTATUS))
484 typedef struct _CSR_API_MESSAGE
493 BYTE HeaderReserved
[sizeof(PORT_MESSAGE
)];
498 CSRSS_CREATE_PROCESS CreateProcessRequest
;
499 CSRSS_CONNECT_PROCESS ConnectRequest
;
500 CSRSS_WRITE_CONSOLE WriteConsoleRequest
;
501 CSRSS_READ_CONSOLE ReadConsoleRequest
;
502 CSRSS_ALLOC_CONSOLE AllocConsoleRequest
;
503 CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest
;
504 CSRSS_SET_CURSOR SetCursorRequest
;
505 CSRSS_FILL_OUTPUT FillOutputRequest
;
506 CSRSS_READ_INPUT ReadInputRequest
;
507 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest
;
508 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest
;
509 CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest
;
510 CSRSS_SET_CURSOR_INFO SetCursorInfoRequest
;
511 CSRSS_GET_CURSOR_INFO GetCursorInfoRequest
;
512 CSRSS_SET_ATTRIB SetAttribRequest
;
513 CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest
;
514 CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest
;
515 CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest
;
516 CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest
;
517 CSRSS_SET_TITLE SetTitleRequest
;
518 CSRSS_GET_TITLE GetTitleRequest
;
519 CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest
;
520 CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest
;
521 CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest
;
522 CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest
;
523 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest
;
524 CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest
;
525 CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest
;
526 CSRSS_EXIT_REACTOS ExitReactosRequest
;
527 CSRSS_SET_SHUTDOWN_PARAMETERS SetShutdownParametersRequest
;
528 CSRSS_GET_SHUTDOWN_PARAMETERS GetShutdownParametersRequest
;
529 CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest
;
530 CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest
;
531 CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest
;
532 CSRSS_GET_INPUT_HANDLE GetInputHandleRequest
;
533 CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest
;
534 CSRSS_CLOSE_HANDLE CloseHandleRequest
;
535 CSRSS_VERIFY_HANDLE VerifyHandleRequest
;
536 CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest
;
537 CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest
;
538 CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest
;
539 CSRSS_CREATE_DESKTOP CreateDesktopRequest
;
540 CSRSS_SHOW_DESKTOP ShowDesktopRequest
;
541 CSRSS_HIDE_DESKTOP HideDesktopRequest
;
542 CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest
;
543 CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest
;
544 CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest
;
545 CSRSS_GET_CONSOLE_CP GetConsoleCodePage
;
546 CSRSS_SET_CONSOLE_CP SetConsoleCodePage
;
547 CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage
;
548 CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage
;
549 CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle
;
550 CSRSS_GET_PROCESS_LIST GetProcessListRequest
;
553 UCHAR PadBuffer
[PORT_MAXIMUM_MESSAGE_LENGTH
];
556 } CSR_API_MESSAGE
, *PCSR_API_MESSAGE
;
558 #endif /* __INCLUDE_CSRSS_CSRSS_H */