2 * CSRSS Console management structures.
11 #include <drivers/blue/ntddblue.h>
13 #define CONSRV_SERVERDLL_INDEX 2
14 #define CONSRV_FIRST_API_NUMBER 512
16 /* w32 console server - move to con.h */
17 CSR_SERVER_DLL_INIT(ConServerDllInitialization
);
19 // Windows NT 4 table, adapted from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_NT
20 // It is for testing purposes. After that I will update it to 2k3 version and add stubs.
21 typedef enum _CONSRV_API_NUMBER
23 BasepCreateProcess
= CONSRV_FIRST_API_NUMBER
,
26 #define WRITE_CONSOLE (0x2)
27 #define READ_CONSOLE (0x3)
28 #define ALLOC_CONSOLE (0x4)
29 #define FREE_CONSOLE (0x5)
30 #define SCREEN_BUFFER_INFO (0x7)
31 #define SET_CURSOR (0x8)
32 #define FILL_OUTPUT (0x9)
33 #define READ_INPUT (0xA)
34 #define WRITE_CONSOLE_OUTPUT_CHAR (0xB)
35 #define WRITE_CONSOLE_OUTPUT_ATTRIB (0xC)
36 #define FILL_OUTPUT_ATTRIB (0xD)
37 #define GET_CURSOR_INFO (0xE)
38 #define SET_CURSOR_INFO (0xF)
39 #define SET_ATTRIB (0x10)
40 #define GET_CONSOLE_MODE (0x11)
41 #define SET_CONSOLE_MODE (0x12)
42 #define CREATE_SCREEN_BUFFER (0x13)
43 #define SET_SCREEN_BUFFER (0x14)
44 #define SET_TITLE (0x15)
45 #define GET_TITLE (0x16)
46 #define WRITE_CONSOLE_OUTPUT (0x17)
47 #define FLUSH_INPUT_BUFFER (0x18)
48 #define SCROLL_CONSOLE_SCREEN_BUFFER (0x19)
49 #define READ_CONSOLE_OUTPUT_CHAR (0x1A)
50 #define READ_CONSOLE_OUTPUT_ATTRIB (0x1B)
51 #define GET_NUM_INPUT_EVENTS (0x1C)
52 #define PEEK_CONSOLE_INPUT (0x21)
53 #define READ_CONSOLE_OUTPUT (0x22)
54 #define WRITE_CONSOLE_INPUT (0x23)
55 #define GET_INPUT_HANDLE (0x24)
56 #define GET_OUTPUT_HANDLE (0x25)
57 #define SETGET_CONSOLE_HW_STATE (0x29)
58 #define GET_CONSOLE_WINDOW (0x2A)
59 #define SET_CONSOLE_ICON (0x2E)
60 #define GET_CONSOLE_CP (0x31)
61 #define SET_CONSOLE_CP (0x32)
62 #define GET_CONSOLE_OUTPUT_CP (0x33)
63 #define SET_CONSOLE_OUTPUT_CP (0x34)
64 #define ADD_CONSOLE_ALIAS (0x38)
65 #define GET_CONSOLE_ALIAS (0x39)
66 #define GET_ALL_CONSOLE_ALIASES (0x3A)
67 #define GET_ALL_CONSOLE_ALIASES_LENGTH (0x3B)
68 #define GET_CONSOLE_ALIASES_EXES (0x3C)
69 #define GET_CONSOLE_ALIASES_EXES_LENGTH (0x3D)
70 #define GENERATE_CTRL_EVENT (0x3E)
71 #define SET_SCREEN_BUFFER_SIZE (0x40)
72 #define GET_CONSOLE_SELECTION_INFO (0x41)
73 #define GET_COMMAND_HISTORY_LENGTH (0x42)
74 #define GET_COMMAND_HISTORY (0x43)
75 #define EXPUNGE_COMMAND_HISTORY (0x44)
76 #define SET_HISTORY_NUMBER_COMMANDS (0x45)
77 #define GET_HISTORY_INFO (0x46)
78 #define SET_HISTORY_INFO (0x47)
82 } CONSRV_API_NUMBER
, *PCONSRV_API_NUMBER
;
86 #define CSRSS_MAX_WRITE_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE))
87 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR))
88 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB))
89 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
90 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
96 ULONG NrCharactersToWrite
;
97 ULONG NrCharactersWritten
;
100 } CSRSS_WRITE_CONSOLE
, *PCSRSS_WRITE_CONSOLE
;
104 HANDLE ConsoleHandle
;
106 WORD NrCharactersToRead
;
107 WORD NrCharactersRead
;
110 UNICODE_STRING ExeName
;
111 DWORD CtrlWakeupMask
;
112 DWORD ControlKeyState
;
113 } CSRSS_READ_CONSOLE
, *PCSRSS_READ_CONSOLE
;
117 PCONTROLDISPATCHER CtrlDispatcher
;
118 BOOLEAN ConsoleNeeded
;
123 } CSRSS_ALLOC_CONSOLE
, *PCSRSS_ALLOC_CONSOLE
;
128 } CSRSS_FREE_CONSOLE
, *PCSRSS_FREE_CONSOLE
;
132 HANDLE ConsoleHandle
;
133 CONSOLE_SCREEN_BUFFER_INFO Info
;
134 } CSRSS_SCREEN_BUFFER_INFO
, *PCSRSS_SCREEN_BUFFER_INFO
;
138 HANDLE ConsoleHandle
;
140 } CSRSS_SET_CURSOR
, *PCSRSS_SET_CURSOR
;
144 HANDLE ConsoleHandle
;
153 ULONG NrCharactersWritten
;
154 } CSRSS_FILL_OUTPUT
, *PCSRSS_FILL_OUTPUT
;
158 HANDLE ConsoleHandle
;
162 } CSRSS_FILL_OUTPUT_ATTRIB
, *PCSRSS_FILL_OUTPUT_ATTRIB
;
166 HANDLE ConsoleHandle
;
171 } CSRSS_READ_INPUT
, *PCSRSS_READ_INPUT
;
175 HANDLE ConsoleHandle
;
180 ULONG NrCharactersWritten
;
182 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR
, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR
;
186 HANDLE ConsoleHandle
;
191 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB
, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB
;
195 HANDLE ConsoleHandle
;
196 CONSOLE_CURSOR_INFO Info
;
197 } CSRSS_GET_CURSOR_INFO
, *PCSRSS_GET_CURSOR_INFO
;
201 HANDLE ConsoleHandle
;
202 CONSOLE_CURSOR_INFO Info
;
203 } CSRSS_SET_CURSOR_INFO
, *PCSRSS_SET_CURSOR_INFO
;
207 HANDLE ConsoleHandle
;
209 } CSRSS_SET_ATTRIB
, *PCSRSS_SET_ATTRIB
;
213 HANDLE ConsoleHandle
;
215 } CSRSS_SET_CONSOLE_MODE
, *PCSRSS_SET_CONSOLE_MODE
;
219 HANDLE ConsoleHandle
;
221 } CSRSS_GET_CONSOLE_MODE
, *PCSRSS_GET_CONSOLE_MODE
;
228 HANDLE OutputHandle
; /* handle to newly created screen buffer */
229 } CSRSS_CREATE_SCREEN_BUFFER
, *PCSRSS_CREATE_SCREEN_BUFFER
;
233 HANDLE OutputHandle
; /* handle to screen buffer to switch to */
234 } CSRSS_SET_SCREEN_BUFFER
, *PCSRSS_SET_SCREEN_BUFFER
;
240 } CSRSS_SET_TITLE
, *PCSRSS_SET_TITLE
;
246 } CSRSS_GET_TITLE
, *PCSRSS_GET_TITLE
;
250 HANDLE ConsoleHandle
;
254 SMALL_RECT WriteRegion
;
256 } CSRSS_WRITE_CONSOLE_OUTPUT
, *PCSRSS_WRITE_CONSOLE_OUTPUT
;
261 } CSRSS_FLUSH_INPUT_BUFFER
, *PCSRSS_FLUSH_INPUT_BUFFER
;
265 HANDLE ConsoleHandle
;
267 SMALL_RECT ScrollRectangle
;
268 BOOLEAN UseClipRectangle
;
269 SMALL_RECT ClipRectangle
;
270 COORD DestinationOrigin
;
272 } CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER
, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER
;
276 HANDLE ConsoleHandle
;
278 DWORD NumCharsToRead
;
283 } CSRSS_READ_CONSOLE_OUTPUT_CHAR
, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR
;
287 HANDLE ConsoleHandle
;
288 DWORD NumAttrsToRead
;
292 } CSRSS_READ_CONSOLE_OUTPUT_ATTRIB
, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB
;
297 HANDLE ConsoleHandle
;
300 INPUT_RECORD
* InputRecord
;
301 } CSRSS_PEEK_CONSOLE_INPUT
, *PCSRSS_PEEK_CONSOLE_INPUT
;
305 HANDLE ConsoleHandle
;
309 SMALL_RECT ReadRegion
;
311 } CSRSS_READ_CONSOLE_OUTPUT
, *PCSRSS_READ_CONSOLE_OUTPUT
;
315 HANDLE ConsoleHandle
;
318 INPUT_RECORD
* InputRecord
;
319 } CSRSS_WRITE_CONSOLE_INPUT
, *PCSRSS_WRITE_CONSOLE_INPUT
;
327 } CSRSS_GET_INPUT_HANDLE
, *PCSRSS_GET_INPUT_HANDLE
,
328 CSRSS_GET_OUTPUT_HANDLE
, *PCSRSS_GET_OUTPUT_HANDLE
;
331 #define CONSOLE_HARDWARE_STATE_GET 0
332 #define CONSOLE_HARDWARE_STATE_SET 1
334 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
335 #define CONSOLE_HARDWARE_STATE_DIRECT 1
339 HANDLE ConsoleHandle
;
340 DWORD SetGet
; /* 0=get; 1=set */
342 } CSRSS_SETGET_CONSOLE_HW_STATE
, *PCSRSS_SETGET_CONSOLE_HW_STATE
;
347 } CSRSS_GET_CONSOLE_WINDOW
, *PCSRSS_GET_CONSOLE_WINDOW
;
352 } CSRSS_SET_CONSOLE_ICON
, *PCSRSS_SET_CONSOLE_ICON
;
359 } CSRSS_ADD_CONSOLE_ALIAS
, *PCSRSS_ADD_CONSOLE_ALIAS
;
366 ULONG TargetBufferLength
;
368 } CSRSS_GET_CONSOLE_ALIAS
, *PCSRSS_GET_CONSOLE_ALIAS
;
374 DWORD AliasBufferLength
;
376 } CSRSS_GET_ALL_CONSOLE_ALIASES
, *PCSRSS_GET_ALL_CONSOLE_ALIAS
;
382 } CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH
, *PCSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH
;
389 } CSRSS_GET_CONSOLE_ALIASES_EXES
, *PCSRSS_GET_CONSOLE_ALIASES_EXES
;
394 } CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH
, *PCSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH
;
400 } CSRSS_GENERATE_CTRL_EVENT
, *PCSRSS_GENERATE_CTRL_EVENT
;
404 HANDLE ConsoleHandle
;
405 DWORD NumInputEvents
;
406 } CSRSS_GET_NUM_INPUT_EVENTS
, *PCSRSS_GET_NUM_INPUT_EVENTS
;
412 } CSRSS_SET_SCREEN_BUFFER_SIZE
, *PCSRSS_SET_SCREEN_BUFFER_SIZE
;
416 CONSOLE_SELECTION_INFO Info
;
417 } CSRSS_GET_CONSOLE_SELECTION_INFO
, *PCSRSS_GET_CONSOLE_SELECTION_INFO
;
421 UNICODE_STRING ExeName
;
423 } CSRSS_GET_COMMAND_HISTORY_LENGTH
, *PCSRSS_GET_COMMAND_HISTORY_LENGTH
;
427 UNICODE_STRING ExeName
;
430 } CSRSS_GET_COMMAND_HISTORY
, *PCSRSS_GET_COMMAND_HISTORY
;
434 UNICODE_STRING ExeName
;
435 } CSRSS_EXPUNGE_COMMAND_HISTORY
, *PCSRSS_EXPUNGE_COMMAND_HISTORY
;
439 UNICODE_STRING ExeName
;
441 } CSRSS_SET_HISTORY_NUMBER_COMMANDS
, *PCSRSS_SET_HISTORY_NUMBER_COMMANDS
;
445 DWORD HistoryBufferSize
;
446 DWORD NumberOfHistoryBuffers
;
448 } CSRSS_GET_HISTORY_INFO
, *PCSRSS_GET_HISTORY_INFO
,
449 CSRSS_SET_HISTORY_INFO
, *PCSRSS_SET_HISTORY_INFO
;;
455 } CSRSS_GET_CONSOLE_CP
, *PCSRSS_GET_CONSOLE_CP
;
460 } CSRSS_SET_CONSOLE_CP
, *PCSRSS_SET_CONSOLE_CP
;
465 } CSRSS_GET_CONSOLE_OUTPUT_CP
, *PCSRSS_GET_CONSOLE_OUTPUT_CP
;
470 } CSRSS_SET_CONSOLE_OUTPUT_CP
, *PCSRSS_SET_CONSOLE_OUTPUT_CP
;
472 typedef struct _CONSOLE_API_MESSAGE
476 PCSR_CAPTURE_BUFFER CsrCaptureData
;
477 CSR_API_NUMBER ApiNumber
;
478 ULONG Status
; // ReturnValue; // NTSTATUS Status
482 CSRSS_WRITE_CONSOLE WriteConsoleRequest
;
483 CSRSS_READ_CONSOLE ReadConsoleRequest
;
484 CSRSS_ALLOC_CONSOLE AllocConsoleRequest
;
485 CSRSS_FREE_CONSOLE FreeConsoleRequest
;
486 CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest
;
487 CSRSS_SET_CURSOR SetCursorRequest
;
488 CSRSS_FILL_OUTPUT FillOutputRequest
;
489 CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest
;
490 CSRSS_READ_INPUT ReadInputRequest
;
491 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest
;
492 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest
;
493 CSRSS_GET_CURSOR_INFO GetCursorInfoRequest
;
494 CSRSS_SET_CURSOR_INFO SetCursorInfoRequest
;
495 CSRSS_SET_ATTRIB SetAttribRequest
;
496 CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest
;
497 CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest
;
498 CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest
;
499 CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest
;
500 CSRSS_SET_TITLE SetTitleRequest
;
501 CSRSS_GET_TITLE GetTitleRequest
;
502 CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest
;
503 CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest
;
504 CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest
;
505 CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest
;
506 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest
;
507 CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest
;
508 CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest
;
509 CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest
;
510 CSRSS_GET_INPUT_HANDLE GetInputHandleRequest
;
511 CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest
;
512 CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest
;
513 CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest
;
514 CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest
;
515 CSRSS_ADD_CONSOLE_ALIAS AddConsoleAlias
;
516 CSRSS_GET_CONSOLE_ALIAS GetConsoleAlias
;
517 CSRSS_GET_ALL_CONSOLE_ALIASES GetAllConsoleAlias
;
518 CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH GetAllConsoleAliasesLength
;
519 CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes
;
520 CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength
;
521 CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent
;
522 CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest
;
523 CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize
;
524 CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo
;
525 CSRSS_GET_COMMAND_HISTORY_LENGTH GetCommandHistoryLength
;
526 CSRSS_GET_COMMAND_HISTORY GetCommandHistory
;
527 CSRSS_EXPUNGE_COMMAND_HISTORY ExpungeCommandHistory
;
528 CSRSS_SET_HISTORY_NUMBER_COMMANDS SetHistoryNumberCommands
;
529 CSRSS_GET_HISTORY_INFO GetHistoryInfo
;
530 CSRSS_SET_HISTORY_INFO SetHistoryInfo
;
531 CSRSS_GET_CONSOLE_CP GetConsoleCodePage
;
532 CSRSS_SET_CONSOLE_CP SetConsoleCodePage
;
533 CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage
;
534 CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage
;
536 } CONSOLE_API_MESSAGE
, *PCONSOLE_API_MESSAGE
;
538 #endif // __CONMSG_H__