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
,
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 typedef struct _CONSOLE_CONNECTION_INFO
117 BOOL ConsoleNeeded
; // Used for GUI apps only.
119 /* Copied from CONSOLE_ALLOCCONSOLE */
121 HANDLE Console
; // ConsoleHandle // In fact, it is a PCSRSS_CONSOLE <-- correct that !!
125 HANDLE InputWaitHandle
;
126 LPTHREAD_START_ROUTINE CtrlDispatcher
;
127 } CONSOLE_CONNECTION_INFO
, *PCONSOLE_CONNECTION_INFO
;
130 #define CONSOLE_INPUT_MODE_VALID 0x0f
131 #define CONSOLE_OUTPUT_MODE_VALID 0x03
137 ULONG nProcessIdsTotal
;
139 } CONSOLE_GETPROCESSLIST
, *PCONSOLE_GETPROCESSLIST
;
146 ULONG NrCharactersToWrite
;
147 ULONG NrCharactersWritten
;
151 } CONSOLE_WRITECONSOLE
, *PCONSOLE_WRITECONSOLE
;
158 WORD NrCharactersToRead
;
159 WORD NrCharactersRead
;
161 UNICODE_STRING ExeName
;
162 DWORD CtrlWakeupMask
;
163 DWORD ControlKeyState
;
167 } CONSOLE_READCONSOLE
, *PCONSOLE_READCONSOLE
;
172 HANDLE Console
; // ConsoleHandle // In fact, it is a PCSRSS_CONSOLE <-- correct that !!
176 HANDLE InputWaitHandle
;
177 LPTHREAD_START_ROUTINE CtrlDispatcher
;
178 } CONSOLE_ALLOCCONSOLE
, *PCONSOLE_ALLOCCONSOLE
;
183 } CONSOLE_FREECONSOLE
, *PCONSOLE_FREECONSOLE
;
188 CONSOLE_SCREEN_BUFFER_INFO Info
;
189 } CONSOLE_GETSCREENBUFFERINFO
, *PCONSOLE_GETSCREENBUFFERINFO
;
195 } CONSOLE_SETCURSORPOSITION
, *PCONSOLE_SETCURSORPOSITION
;
200 CONSOLE_CURSOR_INFO Info
;
201 } CONSOLE_GETSETCURSORINFO
, *PCONSOLE_GETSETCURSORINFO
;
207 } CONSOLE_SETTEXTATTRIB
, *PCONSOLE_SETTEXTATTRIB
;
211 HANDLE ConsoleHandle
; /* A valid input or output console handle */
213 } CONSOLE_GETSETCONSOLEMODE
, *PCONSOLE_GETSETCONSOLEMODE
;
217 HANDLE OutputHandle
; /* Handle to newly created screen buffer */
222 } CONSOLE_CREATESCREENBUFFER
, *PCONSOLE_CREATESCREENBUFFER
;
226 HANDLE OutputHandle
; /* Handle to screen buffer to switch to */
227 } CONSOLE_SETACTIVESCREENBUFFER
, *PCONSOLE_SETACTIVESCREENBUFFER
;
233 } CONSOLE_GETSETCONSOLETITLE
, *PCONSOLE_GETSETCONSOLETITLE
;
242 SMALL_RECT WriteRegion
;
244 } CONSOLE_WRITEOUTPUT
, *PCONSOLE_WRITEOUTPUT
;
249 } CONSOLE_FLUSHINPUTBUFFER
, *PCONSOLE_FLUSHINPUTBUFFER
;
256 SMALL_RECT ScrollRectangle
;
257 BOOL UseClipRectangle
;
258 SMALL_RECT ClipRectangle
;
259 COORD DestinationOrigin
;
261 } CONSOLE_SCROLLSCREENBUFFER
, *PCONSOLE_SCROLLSCREENBUFFER
;
265 * An attribute or a character are instances of the same entity, namely
266 * a "code" (what would be called an (ANSI) escape sequence). Therefore
267 * encode them inside the same structure.
269 typedef enum _CODE_TYPE
273 CODE_ATTRIBUTE
= 0x03
280 DWORD NumCodesToRead
;
293 } pCode
; // Either a pointer to a character or to an attribute.
294 } CONSOLE_READOUTPUTCODE
, *PCONSOLE_READOUTPUTCODE
;
305 ULONG NrCharactersWritten
;
315 } pCode
; // Either a pointer to a character or to an attribute.
316 } CONSOLE_WRITEOUTPUTCODE
, *PCONSOLE_WRITEOUTPUTCODE
;
328 } Code
; // Either a character or an attribute.
333 ULONG NrCharactersWritten
; // FIXME: Only for chars, is it removable ?
334 } CONSOLE_FILLOUTPUTCODE
, *PCONSOLE_FILLOUTPUTCODE
;
340 BOOL bRead
; // TRUE --> Read ; FALSE --> Peek
345 PINPUT_RECORD InputRecord
;
346 } CONSOLE_GETINPUT
, *PCONSOLE_GETINPUT
;
355 SMALL_RECT ReadRegion
;
357 } CONSOLE_READOUTPUT
, *PCONSOLE_READOUTPUT
;
364 INPUT_RECORD
* InputRecord
;
365 } CONSOLE_WRITEINPUT
, *PCONSOLE_WRITEINPUT
;
369 HANDLE ConsoleHandle
;
370 } CONSOLE_CLOSEHANDLE
, *PCONSOLE_CLOSEHANDLE
;
374 HANDLE ConsoleHandle
;
375 } CONSOLE_VERIFYHANDLE
, *PCONSOLE_VERIFYHANDLE
;
379 HANDLE ConsoleHandle
;
383 } CONSOLE_DUPLICATEHANDLE
, *PCONSOLE_DUPLICATEHANDLE
;
388 typedef enum _CONSOLE_HANDLE_TYPE
392 } CONSOLE_HANDLE_TYPE
;
396 HANDLE ConsoleHandle
;
397 CONSOLE_HANDLE_TYPE HandleType
;
401 } CONSOLE_OPENCONSOLE
, *PCONSOLE_OPENCONSOLE
;
406 HANDLE InputWaitHandle
;
407 } CSRSS_GET_INPUT_WAIT_HANDLE
, *PCSRSS_GET_INPUT_WAIT_HANDLE
;
412 * Console hardware states.
414 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
415 #define CONSOLE_HARDWARE_STATE_DIRECT 1
421 } CONSOLE_GETSETHWSTATE
, *PCONSOLE_GETSETHWSTATE
;
426 } CONSOLE_GETWINDOW
, *PCONSOLE_GETWINDOW
;
431 } CONSOLE_SETICON
, *PCONSOLE_SETICON
;
438 ULONG TargetLength
; // Also used for storing the number of bytes written.
443 } CONSOLE_ADDGETALIAS
, *PCONSOLE_ADDGETALIAS
;
448 DWORD AliasesBufferLength
;
450 LPWSTR AliasesBuffer
;
451 } CONSOLE_GETALLALIASES
, *PCONSOLE_GETALLALIASES
;
458 } CONSOLE_GETALLALIASESLENGTH
, *PCONSOLE_GETALLALIASESLENGTH
;
464 } CONSOLE_GETALIASESEXES
, *PCONSOLE_GETALIASESEXES
;
469 } CONSOLE_GETALIASESEXESLENGTH
, *PCONSOLE_GETALIASESEXESLENGTH
;
475 UNICODE_STRING ExeName
;
478 } CONSOLE_GETCOMMANDHISTORY
, *PCONSOLE_GETCOMMANDHISTORY
;
482 UNICODE_STRING ExeName
;
484 } CONSOLE_GETCOMMANDHISTORYLENGTH
, *PCONSOLE_GETCOMMANDHISTORYLENGTH
;
488 UNICODE_STRING ExeName
;
489 } CONSOLE_EXPUNGECOMMANDHISTORY
, *PCONSOLE_EXPUNGECOMMANDHISTORY
;
493 UNICODE_STRING ExeName
;
495 } CONSOLE_SETHISTORYNUMBERCOMMANDS
, *PCONSOLE_SETHISTORYNUMBERCOMMANDS
;
499 UINT HistoryBufferSize
;
500 UINT NumberOfHistoryBuffers
;
502 } CONSOLE_GETSETHISTORYINFO
, *PCONSOLE_GETSETHISTORYINFO
;
510 } CONSOLE_GENERATECTRLEVENT
, *PCONSOLE_GENERATECTRLEVENT
;
515 DWORD NumInputEvents
;
516 } CONSOLE_GETNUMINPUTEVENTS
, *PCONSOLE_GETNUMINPUTEVENTS
;
522 } CONSOLE_SETSCREENBUFFERSIZE
, *PCONSOLE_SETSCREENBUFFERSIZE
;
526 CONSOLE_SELECTION_INFO Info
;
527 } CONSOLE_GETSELECTIONINFO
, *PCONSOLE_GETSELECTIONINFO
;
531 BOOL InputCP
; // TRUE : Input Code Page ; FALSE : Output Code Page
533 } CONSOLE_GETSETINPUTOUTPUTCP
, *PCONSOLE_GETSETINPUTOUTPUTCP
;
535 typedef struct _CONSOLE_API_MESSAGE
539 PCSR_CAPTURE_BUFFER CsrCaptureData
;
540 CSR_API_NUMBER ApiNumber
;
541 ULONG Status
; // ReturnValue; // NTSTATUS Status
545 CONSOLE_ALLOCCONSOLE AllocConsoleRequest
;
546 CONSOLE_FREECONSOLE FreeConsoleRequest
;
549 CONSOLE_OPENCONSOLE OpenConsoleRequest
;
550 CONSOLE_CLOSEHANDLE CloseHandleRequest
;
551 CONSOLE_VERIFYHANDLE VerifyHandleRequest
;
552 CONSOLE_DUPLICATEHANDLE DuplicateHandleRequest
;
554 CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle
;
558 CONSOLE_GETSETCURSORINFO CursorInfoRequest
;
559 CONSOLE_SETCURSORPOSITION SetCursorPositionRequest
;
562 CONSOLE_CREATESCREENBUFFER CreateScreenBufferRequest
;
563 CONSOLE_SETACTIVESCREENBUFFER SetScreenBufferRequest
;
564 CONSOLE_GETSCREENBUFFERINFO ScreenBufferInfoRequest
;
565 CONSOLE_SETSCREENBUFFERSIZE SetScreenBufferSizeRequest
;
566 CONSOLE_SCROLLSCREENBUFFER ScrollScreenBufferRequest
;
568 CONSOLE_GETSELECTIONINFO GetSelectionInfoRequest
;
569 CONSOLE_FLUSHINPUTBUFFER FlushInputBufferRequest
;
572 CONSOLE_GETSETCONSOLEMODE ConsoleModeRequest
;
573 CONSOLE_GETSETHWSTATE HardwareStateRequest
;
576 CONSOLE_GETSETCONSOLETITLE TitleRequest
;
577 CONSOLE_GETWINDOW GetWindowRequest
;
578 CONSOLE_SETICON SetIconRequest
;
581 CONSOLE_READCONSOLE ReadConsoleRequest
; // SrvReadConsole / ReadConsole
582 CONSOLE_GETINPUT GetInputRequest
; // SrvGetConsoleInput / PeekConsoleInput & ReadConsoleInput
583 CONSOLE_READOUTPUT ReadOutputRequest
; // SrvReadConsoleOutput / ReadConsoleOutput
584 CONSOLE_READOUTPUTCODE ReadOutputCodeRequest
; // SrvReadConsoleOutputString / ReadConsoleOutputAttribute & ReadConsoleOutputCharacter
587 CONSOLE_WRITECONSOLE WriteConsoleRequest
; // SrvWriteConsole / WriteConsole
588 CONSOLE_WRITEINPUT WriteInputRequest
;
589 CONSOLE_WRITEOUTPUT WriteOutputRequest
;
590 CONSOLE_WRITEOUTPUTCODE WriteOutputCodeRequest
;
592 CONSOLE_FILLOUTPUTCODE FillOutputRequest
;
593 CONSOLE_SETTEXTATTRIB SetTextAttribRequest
;
596 CONSOLE_ADDGETALIAS ConsoleAliasRequest
;
597 CONSOLE_GETALLALIASES GetAllAliasesRequest
;
598 CONSOLE_GETALLALIASESLENGTH GetAllAliasesLengthRequest
;
599 CONSOLE_GETALIASESEXES GetAliasesExesRequest
;
600 CONSOLE_GETALIASESEXESLENGTH GetAliasesExesLengthRequest
;
603 CONSOLE_GETCOMMANDHISTORY GetCommandHistoryRequest
;
604 CONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest
;
605 CONSOLE_EXPUNGECOMMANDHISTORY ExpungeCommandHistoryRequest
;
606 CONSOLE_SETHISTORYNUMBERCOMMANDS SetHistoryNumberCommandsRequest
;
607 CONSOLE_GETSETHISTORYINFO HistoryInfoRequest
;
609 CONSOLE_GENERATECTRLEVENT GenerateCtrlEventRequest
;
610 CONSOLE_GETNUMINPUTEVENTS GetNumInputEventsRequest
;
612 /* Input and Output Code Pages */
613 CONSOLE_GETSETINPUTOUTPUTCP ConsoleCPRequest
;
615 CONSOLE_GETPROCESSLIST GetProcessListRequest
;
617 } CONSOLE_API_MESSAGE
, *PCONSOLE_API_MESSAGE
;
619 // Check that a CONSOLE_API_MESSAGE can hold in a CSR_API_MESSAGE.
620 CHECK_API_MSG_SIZE(CONSOLE_API_MESSAGE
);