2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Client/Server Runtime SubSystem
4 * FILE: include/reactos/subsys/win/conmsg.h
5 * PURPOSE: Public definitions for communication
6 * between Console API Clients and Servers
7 * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
15 #define CONSRV_SERVERDLL_INDEX 2
16 #define CONSRV_FIRST_API_NUMBER 512
18 // Windows 2k3 tables, adapted from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
19 // plus a little bit of Windows 7. It is for testing purposes. After that I will add stubs.
20 // Some names are also deduced from the subsystems/win32/csrss/csrsrv/server.c ones.
21 typedef enum _CONSRV_API_NUMBER
23 // ConsolepOpenConsole = CONSRV_FIRST_API_NUMBER,
24 ConsolepGetConsoleInput
= CONSRV_FIRST_API_NUMBER
,
25 ConsolepWriteConsoleInput
,
26 ConsolepReadConsoleOutput
,
27 ConsolepWriteConsoleOutput
,
28 // ConsolepReadConsoleOutputString,
29 // ConsolepWriteConsoleOutputString,
30 // ConsolepFillConsoleOutput,
32 // ConsolepGetNumberOfFonts,
33 ConsolepGetNumberOfInputEvents
,
34 ConsolepGetScreenBufferInfo
,
35 ConsolepGetCursorInfo
,
36 // ConsolepGetMouseInfo,
37 // ConsolepGetFontInfo,
38 // ConsolepGetFontSize,
39 // ConsolepGetCurrentFont,
41 ConsolepSetActiveScreenBuffer
,
42 ConsolepFlushInputBuffer
,
43 // ConsolepGetLargestWindowSize,
44 ConsolepSetScreenBufferSize
,
45 // ConsolepSetCursorPosition,
46 ConsolepSetCursorInfo
,
47 // ConsolepSetWindowInfo,
48 ConsolepScrollScreenBuffer
,
49 // ConsolepSetTextAttribute,
54 ConsolepDuplicateHandle
,
55 /**/ ConsolepGetHandleInformation
/**/,
56 // ConsolepSetHandleInformation,
58 ConsolepVerifyIoHandle
,
63 ConsolepCreateScreenBuffer
,
64 // ConsolepInvalidateBitMapRect,
65 // ConsolepVDMOperation,
67 // ConsolepShowCursor,
68 // ConsolepMenuControl,
69 // ConsolepSetPalette,
70 // ConsolepSetDisplayMode,
71 // ConsolepRegisterVDM,
72 ConsolepGetHardwareState
,
73 ConsolepSetHardwareState
,
74 // ConsolepGetDisplayMode,
77 ConsolepGetAliasesLength
,
78 ConsolepGetAliasExesLength
,
81 ConsolepExpungeCommandHistory
,
82 ConsolepSetNumberOfCommands
,
83 ConsolepGetCommandHistoryLength
,
84 ConsolepGetCommandHistory
,
85 // ConsolepSetCommandHistoryMode,
88 // ConsolepSetKeyShortcuts,
89 // ConsolepSetMenuClose,
90 // ConsolepNotifyLastClose,
91 ConsolepGenerateCtrlEvent
,
92 // ConsolepGetKeyboardLayoutName,
93 ConsolepGetConsoleWindow
,
95 // ConsolepSetLocalEUDC,
96 // ConsolepSetCursorMode,
97 // ConsolepGetCursorMode,
98 // ConsolepRegisterOS2,
99 // ConsolepSetOS2OemFormat,
100 // ConsolepGetNlsMode,
101 // ConsolepSetNlsMode,
102 // ConsolepRegisterConsoleIME,
103 // ConsolepUnregisterConsoleIME,
104 // ConsolepGetLangId,
106 ConsolepGetSelectionInfo
,
107 ConsolepGetProcessList
,
112 } CONSRV_API_NUMBER
, *PCONSRV_API_NUMBER
;
115 #define CSR_API_MESSAGE_HEADER_SIZE(Type) (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type))
116 #define CSRSS_MAX_WRITE_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE))
117 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR))
118 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB))
119 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
120 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
122 #define CONSOLE_INPUT_MODE_VALID (0x0f)
123 #define CONSOLE_OUTPUT_MODE_VALID (0x03)
130 ULONG nProcessIdsTotal
;
131 } CSRSS_GET_PROCESS_LIST
, *PCSRSS_GET_PROCESS_LIST
;
135 HANDLE ConsoleHandle
;
137 ULONG NrCharactersToWrite
;
138 ULONG NrCharactersWritten
;
141 } CSRSS_WRITE_CONSOLE
, *PCSRSS_WRITE_CONSOLE
;
145 HANDLE ConsoleHandle
;
147 WORD NrCharactersToRead
;
148 WORD NrCharactersRead
;
151 UNICODE_STRING ExeName
;
152 DWORD CtrlWakeupMask
;
153 DWORD ControlKeyState
;
154 } CSRSS_READ_CONSOLE
, *PCSRSS_READ_CONSOLE
;
156 typedef VOID (CALLBACK
*PCONTROLDISPATCHER
)(DWORD
);
160 PCONTROLDISPATCHER CtrlDispatcher
;
161 BOOLEAN ConsoleNeeded
;
166 } CSRSS_ALLOC_CONSOLE
, *PCSRSS_ALLOC_CONSOLE
;
171 } CSRSS_FREE_CONSOLE
, *PCSRSS_FREE_CONSOLE
;
175 HANDLE ConsoleHandle
;
176 CONSOLE_SCREEN_BUFFER_INFO Info
;
177 } CSRSS_SCREEN_BUFFER_INFO
, *PCSRSS_SCREEN_BUFFER_INFO
;
181 HANDLE ConsoleHandle
;
183 } CSRSS_SET_CURSOR
, *PCSRSS_SET_CURSOR
;
187 HANDLE ConsoleHandle
;
196 ULONG NrCharactersWritten
;
197 } CSRSS_FILL_OUTPUT
, *PCSRSS_FILL_OUTPUT
;
201 HANDLE ConsoleHandle
;
205 } CSRSS_FILL_OUTPUT_ATTRIB
, *PCSRSS_FILL_OUTPUT_ATTRIB
;
209 HANDLE ConsoleHandle
;
214 } CSRSS_READ_INPUT
, *PCSRSS_READ_INPUT
;
218 HANDLE ConsoleHandle
;
223 ULONG NrCharactersWritten
;
225 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR
, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR
;
229 HANDLE ConsoleHandle
;
234 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB
, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB
;
238 HANDLE ConsoleHandle
;
239 CONSOLE_CURSOR_INFO Info
;
240 } CSRSS_GET_CURSOR_INFO
, *PCSRSS_GET_CURSOR_INFO
;
244 HANDLE ConsoleHandle
;
245 CONSOLE_CURSOR_INFO Info
;
246 } CSRSS_SET_CURSOR_INFO
, *PCSRSS_SET_CURSOR_INFO
;
250 HANDLE ConsoleHandle
;
252 } CSRSS_SET_ATTRIB
, *PCSRSS_SET_ATTRIB
;
256 HANDLE ConsoleHandle
;
258 } CSRSS_SET_CONSOLE_MODE
, *PCSRSS_SET_CONSOLE_MODE
;
262 HANDLE ConsoleHandle
;
264 } CSRSS_GET_CONSOLE_MODE
, *PCSRSS_GET_CONSOLE_MODE
;
271 HANDLE OutputHandle
; /* handle to newly created screen buffer */
272 } CSRSS_CREATE_SCREEN_BUFFER
, *PCSRSS_CREATE_SCREEN_BUFFER
;
276 HANDLE OutputHandle
; /* handle to screen buffer to switch to */
277 } CSRSS_SET_SCREEN_BUFFER
, *PCSRSS_SET_SCREEN_BUFFER
;
283 } CSRSS_SET_TITLE
, *PCSRSS_SET_TITLE
;
289 } CSRSS_GET_TITLE
, *PCSRSS_GET_TITLE
;
293 HANDLE ConsoleHandle
;
297 SMALL_RECT WriteRegion
;
299 } CSRSS_WRITE_CONSOLE_OUTPUT
, *PCSRSS_WRITE_CONSOLE_OUTPUT
;
304 } CSRSS_FLUSH_INPUT_BUFFER
, *PCSRSS_FLUSH_INPUT_BUFFER
;
308 HANDLE ConsoleHandle
;
310 SMALL_RECT ScrollRectangle
;
311 BOOLEAN UseClipRectangle
;
312 SMALL_RECT ClipRectangle
;
313 COORD DestinationOrigin
;
315 } CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER
, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER
;
319 HANDLE ConsoleHandle
;
321 DWORD NumCharsToRead
;
326 } CSRSS_READ_CONSOLE_OUTPUT_CHAR
, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR
;
330 HANDLE ConsoleHandle
;
331 DWORD NumAttrsToRead
;
335 } CSRSS_READ_CONSOLE_OUTPUT_ATTRIB
, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB
;
340 HANDLE ConsoleHandle
;
343 INPUT_RECORD
* InputRecord
;
344 } CSRSS_PEEK_CONSOLE_INPUT
, *PCSRSS_PEEK_CONSOLE_INPUT
;
348 HANDLE ConsoleHandle
;
352 SMALL_RECT ReadRegion
;
354 } CSRSS_READ_CONSOLE_OUTPUT
, *PCSRSS_READ_CONSOLE_OUTPUT
;
358 HANDLE ConsoleHandle
;
361 INPUT_RECORD
* InputRecord
;
362 } CSRSS_WRITE_CONSOLE_INPUT
, *PCSRSS_WRITE_CONSOLE_INPUT
;
367 } CSRSS_CLOSE_HANDLE
, *PCSRSS_CLOSE_HANDLE
;
372 } CSRSS_VERIFY_HANDLE
, *PCSRSS_VERIFY_HANDLE
;
380 } CSRSS_DUPLICATE_HANDLE
, *PCSRSS_DUPLICATE_HANDLE
;
388 } CSRSS_GET_INPUT_HANDLE
, *PCSRSS_GET_INPUT_HANDLE
,
389 CSRSS_GET_OUTPUT_HANDLE
, *PCSRSS_GET_OUTPUT_HANDLE
;
393 HANDLE InputWaitHandle
;
394 } CSRSS_GET_INPUT_WAIT_HANDLE
, *PCSRSS_GET_INPUT_WAIT_HANDLE
;
396 #define CONSOLE_HARDWARE_STATE_GET 0
397 #define CONSOLE_HARDWARE_STATE_SET 1
399 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
400 #define CONSOLE_HARDWARE_STATE_DIRECT 1
404 HANDLE ConsoleHandle
;
405 DWORD SetGet
; /* 0=get; 1=set */
407 } CSRSS_SETGET_CONSOLE_HW_STATE
, *PCSRSS_SETGET_CONSOLE_HW_STATE
;
412 } CSRSS_GET_CONSOLE_WINDOW
, *PCSRSS_GET_CONSOLE_WINDOW
;
417 } CSRSS_SET_CONSOLE_ICON
, *PCSRSS_SET_CONSOLE_ICON
;
424 } CSRSS_ADD_CONSOLE_ALIAS
, *PCSRSS_ADD_CONSOLE_ALIAS
;
431 ULONG TargetBufferLength
;
433 } CSRSS_GET_CONSOLE_ALIAS
, *PCSRSS_GET_CONSOLE_ALIAS
;
439 DWORD AliasBufferLength
;
441 } CSRSS_GET_ALL_CONSOLE_ALIASES
, *PCSRSS_GET_ALL_CONSOLE_ALIASES
;
447 } CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH
, *PCSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH
;
454 } CSRSS_GET_CONSOLE_ALIASES_EXES
, *PCSRSS_GET_CONSOLE_ALIASES_EXES
;
459 } CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH
, *PCSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH
;
465 } CSRSS_GENERATE_CTRL_EVENT
, *PCSRSS_GENERATE_CTRL_EVENT
;
469 HANDLE ConsoleHandle
;
470 DWORD NumInputEvents
;
471 } CSRSS_GET_NUM_INPUT_EVENTS
, *PCSRSS_GET_NUM_INPUT_EVENTS
;
477 } CSRSS_SET_SCREEN_BUFFER_SIZE
, *PCSRSS_SET_SCREEN_BUFFER_SIZE
;
481 CONSOLE_SELECTION_INFO Info
;
482 } CSRSS_GET_CONSOLE_SELECTION_INFO
, *PCSRSS_GET_CONSOLE_SELECTION_INFO
;
486 UNICODE_STRING ExeName
;
488 } CSRSS_GET_COMMAND_HISTORY_LENGTH
, *PCSRSS_GET_COMMAND_HISTORY_LENGTH
;
492 UNICODE_STRING ExeName
;
495 } CSRSS_GET_COMMAND_HISTORY
, *PCSRSS_GET_COMMAND_HISTORY
;
499 UNICODE_STRING ExeName
;
500 } CSRSS_EXPUNGE_COMMAND_HISTORY
, *PCSRSS_EXPUNGE_COMMAND_HISTORY
;
504 UNICODE_STRING ExeName
;
506 } CSRSS_SET_HISTORY_NUMBER_COMMANDS
, *PCSRSS_SET_HISTORY_NUMBER_COMMANDS
;
510 DWORD HistoryBufferSize
;
511 DWORD NumberOfHistoryBuffers
;
513 } CSRSS_GET_HISTORY_INFO
, *PCSRSS_GET_HISTORY_INFO
,
514 CSRSS_SET_HISTORY_INFO
, *PCSRSS_SET_HISTORY_INFO
;;
519 } CSRSS_GET_CONSOLE_CP
, *PCSRSS_GET_CONSOLE_CP
;
524 } CSRSS_SET_CONSOLE_CP
, *PCSRSS_SET_CONSOLE_CP
;
529 } CSRSS_GET_CONSOLE_OUTPUT_CP
, *PCSRSS_GET_CONSOLE_OUTPUT_CP
;
534 } CSRSS_SET_CONSOLE_OUTPUT_CP
, *PCSRSS_SET_CONSOLE_OUTPUT_CP
;
536 typedef struct _CONSOLE_API_MESSAGE
540 PCSR_CAPTURE_BUFFER CsrCaptureData
;
541 CSR_API_NUMBER ApiNumber
;
542 ULONG Status
; // ReturnValue; // NTSTATUS Status
546 CSRSS_WRITE_CONSOLE WriteConsoleRequest
;
547 CSRSS_READ_CONSOLE ReadConsoleRequest
;
548 CSRSS_ALLOC_CONSOLE AllocConsoleRequest
;
549 CSRSS_FREE_CONSOLE FreeConsoleRequest
;
550 CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest
;
551 CSRSS_SET_CURSOR SetCursorRequest
;
552 CSRSS_FILL_OUTPUT FillOutputRequest
;
553 CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest
;
554 CSRSS_READ_INPUT ReadInputRequest
;
555 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest
;
556 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest
;
557 CSRSS_GET_CURSOR_INFO GetCursorInfoRequest
;
558 CSRSS_SET_CURSOR_INFO SetCursorInfoRequest
;
559 CSRSS_SET_ATTRIB SetAttribRequest
;
560 CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest
;
561 CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest
;
562 CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest
;
563 CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest
;
564 CSRSS_SET_TITLE SetTitleRequest
;
565 CSRSS_GET_TITLE GetTitleRequest
;
566 CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest
;
567 CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest
;
568 CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest
;
569 CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest
;
570 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest
;
571 CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest
;
572 CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest
;
573 CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest
;
574 CSRSS_GET_INPUT_HANDLE GetInputHandleRequest
;
575 CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest
;
576 CSRSS_CLOSE_HANDLE CloseHandleRequest
;
577 CSRSS_VERIFY_HANDLE VerifyHandleRequest
;
578 CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest
;
579 CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle
;
580 CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest
;
581 CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest
;
582 CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest
;
583 CSRSS_ADD_CONSOLE_ALIAS AddConsoleAlias
;
584 CSRSS_GET_CONSOLE_ALIAS GetConsoleAlias
;
585 CSRSS_GET_ALL_CONSOLE_ALIASES GetAllConsoleAlias
;
586 CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH GetAllConsoleAliasesLength
;
587 CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes
;
588 CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength
;
589 CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent
;
590 CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest
;
591 CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize
;
592 CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo
;
593 CSRSS_GET_COMMAND_HISTORY_LENGTH GetCommandHistoryLength
;
594 CSRSS_GET_COMMAND_HISTORY GetCommandHistory
;
595 CSRSS_EXPUNGE_COMMAND_HISTORY ExpungeCommandHistory
;
596 CSRSS_SET_HISTORY_NUMBER_COMMANDS SetHistoryNumberCommands
;
597 CSRSS_GET_HISTORY_INFO GetHistoryInfo
;
598 CSRSS_SET_HISTORY_INFO SetHistoryInfo
;
599 CSRSS_GET_CONSOLE_CP GetConsoleCodePage
;
600 CSRSS_SET_CONSOLE_CP SetConsoleCodePage
;
601 CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage
;
602 CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage
;
603 CSRSS_GET_PROCESS_LIST GetProcessListRequest
;
605 } CONSOLE_API_MESSAGE
, *PCONSOLE_API_MESSAGE
;