[CONSRV]
[reactos.git] / include / reactos / subsys / win / conmsg.h
1 /*
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)
8 */
9
10 #ifndef _CONMSG_H
11 #define _CONMSG_H
12
13 #pragma once
14
15 #define CONSRV_SERVERDLL_INDEX 2
16 #define CONSRV_FIRST_API_NUMBER 512
17
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
22 {
23 // ConsolepOpenConsole = CONSRV_FIRST_API_NUMBER,
24 ConsolepGetConsoleInput = CONSRV_FIRST_API_NUMBER,
25 ConsolepWriteConsoleInput,
26 ConsolepReadConsoleOutput,
27 ConsolepWriteConsoleOutput,
28 ConsolepReadConsoleOutputString,
29 // ConsolepWriteConsoleOutputString,
30 // ConsolepFillConsoleOutput,
31 ConsolepGetMode,
32 // ConsolepGetNumberOfFonts,
33 ConsolepGetNumberOfInputEvents,
34 ConsolepGetScreenBufferInfo,
35 ConsolepGetCursorInfo,
36 // ConsolepGetMouseInfo,
37 // ConsolepGetFontInfo,
38 // ConsolepGetFontSize,
39 // ConsolepGetCurrentFont,
40 ConsolepSetMode,
41 ConsolepSetActiveScreenBuffer,
42 ConsolepFlushInputBuffer,
43 // ConsolepGetLargestWindowSize,
44 ConsolepSetScreenBufferSize,
45 // ConsolepSetCursorPosition,
46 ConsolepSetCursorInfo,
47 // ConsolepSetWindowInfo,
48 ConsolepScrollScreenBuffer,
49 // ConsolepSetTextAttribute,
50 // ConsolepSetFont,
51 ConsolepSetIcon,
52 ConsolepReadConsole,
53 ConsolepWriteConsole,
54 ConsolepDuplicateHandle,
55 /**/ ConsolepGetHandleInformation /**/,
56 // ConsolepSetHandleInformation,
57 ConsolepCloseHandle,
58 ConsolepVerifyIoHandle,
59 ConsolepAlloc,
60 ConsolepFree,
61 ConsolepGetTitle,
62 ConsolepSetTitle,
63 ConsolepCreateScreenBuffer,
64 // ConsolepInvalidateBitMapRect,
65 // ConsolepVDMOperation,
66 ConsolepSetCursor,
67 // ConsolepShowCursor,
68 // ConsolepMenuControl,
69 // ConsolepSetPalette,
70 // ConsolepSetDisplayMode,
71 // ConsolepRegisterVDM,
72 ConsolepGetHardwareState,
73 ConsolepSetHardwareState,
74 // ConsolepGetDisplayMode,
75 ConsolepAddAlias,
76 ConsolepGetAlias,
77 ConsolepGetAliasesLength,
78 ConsolepGetAliasExesLength,
79 ConsolepGetAliases,
80 ConsolepGetAliasExes,
81 ConsolepExpungeCommandHistory,
82 ConsolepSetNumberOfCommands,
83 ConsolepGetCommandHistoryLength,
84 ConsolepGetCommandHistory,
85 // ConsolepSetCommandHistoryMode,
86 ConsolepGetCP,
87 ConsolepSetCP,
88 // ConsolepSetKeyShortcuts,
89 // ConsolepSetMenuClose,
90 // ConsolepNotifyLastClose,
91 ConsolepGenerateCtrlEvent,
92 // ConsolepGetKeyboardLayoutName,
93 ConsolepGetConsoleWindow,
94 // ConsolepCharType,
95 // ConsolepSetLocalEUDC,
96 // ConsolepSetCursorMode,
97 // ConsolepGetCursorMode,
98 // ConsolepRegisterOS2,
99 // ConsolepSetOS2OemFormat,
100 // ConsolepGetNlsMode,
101 // ConsolepSetNlsMode,
102 // ConsolepRegisterConsoleIME,
103 // ConsolepUnregisterConsoleIME,
104 // ConsolepGetLangId,
105 // ConsolepAttach,
106 ConsolepGetSelectionInfo,
107 ConsolepGetProcessList,
108 ConsolepGetHistory,
109 ConsolepSetHistory,
110
111 ConsolepMaxApiNumber
112 } CONSRV_API_NUMBER, *PCONSRV_API_NUMBER;
113
114
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))
121
122 #define CONSOLE_INPUT_MODE_VALID (0x0f)
123 #define CONSOLE_OUTPUT_MODE_VALID (0x03)
124
125
126 typedef struct
127 {
128 USHORT nMaxIds;
129 PDWORD ProcessId;
130 ULONG nProcessIdsTotal;
131 } CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
132
133 typedef struct
134 {
135 HANDLE ConsoleHandle;
136 BOOL Unicode;
137 ULONG NrCharactersToWrite;
138 ULONG NrCharactersWritten;
139 HANDLE UnpauseEvent;
140 BYTE Buffer[0];
141 } CSRSS_WRITE_CONSOLE, *PCSRSS_WRITE_CONSOLE;
142
143 typedef struct
144 {
145 HANDLE ConsoleHandle;
146 BOOL Unicode;
147 WORD NrCharactersToRead;
148 WORD NrCharactersRead;
149 HANDLE EventHandle;
150
151 PVOID Buffer;
152 ULONG BufferSize;
153
154 UNICODE_STRING ExeName;
155 DWORD CtrlWakeupMask;
156 DWORD ControlKeyState;
157 } CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
158
159 typedef struct
160 {
161 LPTHREAD_START_ROUTINE CtrlDispatcher;
162 BOOL ConsoleNeeded;
163 INT ShowCmd;
164 HANDLE Console;
165 HANDLE InputHandle;
166 HANDLE OutputHandle;
167 } CSRSS_ALLOC_CONSOLE, *PCSRSS_ALLOC_CONSOLE;
168
169 typedef struct
170 {
171 ULONG Dummy;
172 } CSRSS_FREE_CONSOLE, *PCSRSS_FREE_CONSOLE;
173
174 typedef struct
175 {
176 HANDLE ConsoleHandle;
177 CONSOLE_SCREEN_BUFFER_INFO Info;
178 } CSRSS_SCREEN_BUFFER_INFO, *PCSRSS_SCREEN_BUFFER_INFO;
179
180 typedef struct
181 {
182 HANDLE ConsoleHandle;
183 COORD Position;
184 } CSRSS_SET_CURSOR, *PCSRSS_SET_CURSOR;
185
186 typedef struct
187 {
188 HANDLE ConsoleHandle;
189 BOOL Unicode;
190 union
191 {
192 CHAR AsciiChar;
193 WCHAR UnicodeChar;
194 } Char;
195 COORD Position;
196 WORD Length;
197 ULONG NrCharactersWritten;
198 } CSRSS_FILL_OUTPUT, *PCSRSS_FILL_OUTPUT;
199
200 typedef struct
201 {
202 HANDLE ConsoleHandle;
203 CHAR Attribute;
204 COORD Coord;
205 WORD Length;
206 } CSRSS_FILL_OUTPUT_ATTRIB, *PCSRSS_FILL_OUTPUT_ATTRIB;
207
208 typedef struct
209 {
210 HANDLE ConsoleHandle;
211 BOOL Unicode;
212 WORD Length;
213 COORD Coord;
214 COORD EndCoord;
215 ULONG NrCharactersWritten;
216 CHAR String[0];
217 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR;
218
219 typedef struct
220 {
221 HANDLE ConsoleHandle;
222 WORD Length;
223 COORD Coord;
224 COORD EndCoord;
225 WORD Attribute[0];
226 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB;
227
228 typedef struct
229 {
230 HANDLE ConsoleHandle;
231 CONSOLE_CURSOR_INFO Info;
232 } CSRSS_GET_CURSOR_INFO, *PCSRSS_GET_CURSOR_INFO;
233
234 typedef struct
235 {
236 HANDLE ConsoleHandle;
237 CONSOLE_CURSOR_INFO Info;
238 } CSRSS_SET_CURSOR_INFO, *PCSRSS_SET_CURSOR_INFO;
239
240 typedef struct
241 {
242 HANDLE ConsoleHandle;
243 WORD Attrib;
244 } CSRSS_SET_ATTRIB, *PCSRSS_SET_ATTRIB;
245
246 typedef struct
247 {
248 HANDLE ConsoleHandle;
249 DWORD Mode;
250 } CSRSS_SET_CONSOLE_MODE, *PCSRSS_SET_CONSOLE_MODE;
251
252 typedef struct
253 {
254 HANDLE ConsoleHandle;
255 DWORD ConsoleMode;
256 } CSRSS_GET_CONSOLE_MODE, *PCSRSS_GET_CONSOLE_MODE;
257
258 typedef struct
259 {
260 DWORD Access;
261 DWORD ShareMode;
262 BOOL Inheritable;
263 HANDLE OutputHandle; /* handle to newly created screen buffer */
264 } CSRSS_CREATE_SCREEN_BUFFER, *PCSRSS_CREATE_SCREEN_BUFFER;
265
266 typedef struct
267 {
268 HANDLE OutputHandle; /* handle to screen buffer to switch to */
269 } CSRSS_SET_SCREEN_BUFFER, *PCSRSS_SET_SCREEN_BUFFER;
270
271 typedef struct
272 {
273 DWORD Length;
274 PWCHAR Title;
275 } CSRSS_SET_TITLE, *PCSRSS_SET_TITLE;
276
277 typedef struct
278 {
279 DWORD Length;
280 PWCHAR Title;
281 } CSRSS_GET_TITLE, *PCSRSS_GET_TITLE;
282
283 typedef struct
284 {
285 HANDLE ConsoleHandle;
286 BOOL Unicode;
287 COORD BufferSize;
288 COORD BufferCoord;
289 SMALL_RECT WriteRegion;
290 CHAR_INFO* CharInfo;
291 } CSRSS_WRITE_CONSOLE_OUTPUT, *PCSRSS_WRITE_CONSOLE_OUTPUT;
292
293 typedef struct
294 {
295 HANDLE ConsoleInput;
296 } CSRSS_FLUSH_INPUT_BUFFER, *PCSRSS_FLUSH_INPUT_BUFFER;
297
298 typedef struct
299 {
300 HANDLE ConsoleHandle;
301 BOOL Unicode;
302 SMALL_RECT ScrollRectangle;
303 BOOL UseClipRectangle;
304 SMALL_RECT ClipRectangle;
305 COORD DestinationOrigin;
306 CHAR_INFO Fill;
307 } CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER;
308
309
310 /*
311 * An attribute or a character are instances of the same entity, namely
312 * a "code" (what would be called an (ANSI) escape sequence). Therefore
313 * encode them inside the same structure.
314 */
315 typedef enum _CODE_TYPE
316 {
317 CODE_ASCII = 0x01,
318 CODE_UNICODE = 0x02,
319 CODE_ATTRIBUTE = 0x03
320 } CODE_TYPE;
321
322 typedef struct
323 {
324 HANDLE ConsoleHandle;
325 CODE_TYPE CodeType;
326
327 DWORD NumCodesToRead;
328 COORD ReadCoord;
329 COORD EndCoord;
330
331 DWORD CodesRead;
332
333 union
334 {
335 PVOID pCode;
336 PCHAR AsciiChar;
337 PWCHAR UnicodeChar;
338 PWORD Attribute;
339 } pCode; // Either a pointer to a character or to an attribute.
340 } CSRSS_READ_CONSOLE_OUTPUT_CODE, *PCSRSS_READ_CONSOLE_OUTPUT_CODE;
341
342
343 typedef struct
344 {
345 HANDLE ConsoleHandle;
346 BOOL Unicode;
347 BOOL bRead; // TRUE --> Read ; FALSE --> Peek
348
349 DWORD Length;
350 INPUT_RECORD* InputRecord;
351
352 /** For Read **/
353 ULONG InputsRead;
354 // INPUT_RECORD Input;
355 BOOL MoreEvents;
356 HANDLE Event;
357 } CSRSS_GET_CONSOLE_INPUT, *PCSRSS_GET_CONSOLE_INPUT;
358
359 typedef struct
360 {
361 HANDLE ConsoleHandle;
362 BOOL Unicode;
363 COORD BufferSize;
364 COORD BufferCoord;
365 SMALL_RECT ReadRegion;
366 CHAR_INFO* CharInfo;
367 } CSRSS_READ_CONSOLE_OUTPUT, *PCSRSS_READ_CONSOLE_OUTPUT;
368
369 typedef struct
370 {
371 HANDLE ConsoleHandle;
372 BOOL Unicode;
373 DWORD Length;
374 INPUT_RECORD* InputRecord;
375 } CSRSS_WRITE_CONSOLE_INPUT, *PCSRSS_WRITE_CONSOLE_INPUT;
376
377 typedef struct
378 {
379 HANDLE Handle;
380 } CSRSS_CLOSE_HANDLE, *PCSRSS_CLOSE_HANDLE;
381
382 typedef struct
383 {
384 HANDLE Handle;
385 } CSRSS_VERIFY_HANDLE, *PCSRSS_VERIFY_HANDLE;
386
387 typedef struct
388 {
389 HANDLE Handle;
390 DWORD Access;
391 BOOL Inheritable;
392 DWORD Options;
393 } CSRSS_DUPLICATE_HANDLE, *PCSRSS_DUPLICATE_HANDLE;
394
395 typedef struct
396 {
397 DWORD Access;
398 BOOL Inheritable;
399 HANDLE Handle;
400 DWORD ShareMode;
401 } CSRSS_GET_INPUT_HANDLE, *PCSRSS_GET_INPUT_HANDLE,
402 CSRSS_GET_OUTPUT_HANDLE, *PCSRSS_GET_OUTPUT_HANDLE;
403
404 typedef struct
405 {
406 HANDLE InputWaitHandle;
407 } CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
408
409 #define CONSOLE_HARDWARE_STATE_GET 0
410 #define CONSOLE_HARDWARE_STATE_SET 1
411
412 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
413 #define CONSOLE_HARDWARE_STATE_DIRECT 1
414
415 typedef struct
416 {
417 HANDLE ConsoleHandle;
418 DWORD SetGet; /* 0=get; 1=set */
419 DWORD State;
420 } CSRSS_SETGET_CONSOLE_HW_STATE, *PCSRSS_SETGET_CONSOLE_HW_STATE;
421
422 typedef struct
423 {
424 HWND WindowHandle;
425 } CSRSS_GET_CONSOLE_WINDOW, *PCSRSS_GET_CONSOLE_WINDOW;
426
427 typedef struct
428 {
429 HICON WindowIcon;
430 } CSRSS_SET_CONSOLE_ICON, *PCSRSS_SET_CONSOLE_ICON;
431
432
433
434
435
436
437
438
439
440 typedef struct
441 {
442 ULONG SourceLength;
443 ULONG TargetLength; // Also used for storing the number of bytes written.
444 ULONG ExeLength;
445 LPWSTR Source;
446 LPWSTR Target;
447 LPWSTR Exe;
448 } CSRSS_CONSOLE_ALIAS, *PCSRSS_CONSOLE_ALIAS;
449
450 typedef struct
451 {
452 DWORD ExeLength;
453 DWORD AliasesBufferLength;
454 LPWSTR ExeName;
455 LPWSTR AliasesBuffer;
456 } CSRSS_GET_ALL_CONSOLE_ALIASES, *PCSRSS_GET_ALL_CONSOLE_ALIASES;
457
458 typedef struct
459 {
460 DWORD Length;
461 DWORD ExeLength;
462 LPWSTR ExeName;
463 } CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH, *PCSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH;
464
465 typedef struct
466 {
467 DWORD Length;
468 LPWSTR ExeNames;
469 } CSRSS_GET_CONSOLE_ALIASES_EXES, *PCSRSS_GET_CONSOLE_ALIASES_EXES;
470
471 typedef struct
472 {
473 DWORD Length;
474 } CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH, *PCSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH;
475
476
477
478
479
480
481 typedef struct
482 {
483 UNICODE_STRING ExeName;
484 PWCHAR History;
485 DWORD Length;
486 } CSRSS_GET_COMMAND_HISTORY, *PCSRSS_GET_COMMAND_HISTORY;
487
488 typedef struct
489 {
490 UNICODE_STRING ExeName;
491 DWORD Length;
492 } CSRSS_GET_COMMAND_HISTORY_LENGTH, *PCSRSS_GET_COMMAND_HISTORY_LENGTH;
493
494 typedef struct
495 {
496 UNICODE_STRING ExeName;
497 } CSRSS_EXPUNGE_COMMAND_HISTORY, *PCSRSS_EXPUNGE_COMMAND_HISTORY;
498
499 typedef struct
500 {
501 UNICODE_STRING ExeName;
502 DWORD NumCommands;
503 } CSRSS_SET_HISTORY_NUMBER_COMMANDS, *PCSRSS_SET_HISTORY_NUMBER_COMMANDS;
504
505 typedef struct
506 {
507 UINT HistoryBufferSize;
508 UINT NumberOfHistoryBuffers;
509 DWORD dwFlags;
510 } CSRSS_HISTORY_INFO, *PCSRSS_HISTORY_INFO;
511
512
513
514
515
516
517
518
519
520
521 typedef struct
522 {
523 DWORD Event;
524 DWORD ProcessGroup;
525 } CSRSS_GENERATE_CTRL_EVENT, *PCSRSS_GENERATE_CTRL_EVENT;
526
527 typedef struct
528 {
529 HANDLE ConsoleHandle;
530 DWORD NumInputEvents;
531 } CSRSS_GET_NUM_INPUT_EVENTS, *PCSRSS_GET_NUM_INPUT_EVENTS;
532
533 typedef struct
534 {
535 HANDLE OutputHandle;
536 COORD Size;
537 } CSRSS_SET_SCREEN_BUFFER_SIZE, *PCSRSS_SET_SCREEN_BUFFER_SIZE;
538
539 typedef struct
540 {
541 CONSOLE_SELECTION_INFO Info;
542 } CSRSS_GET_CONSOLE_SELECTION_INFO, *PCSRSS_GET_CONSOLE_SELECTION_INFO;
543
544 typedef struct
545 {
546 UINT CodePage;
547 } CSRSS_GET_CONSOLE_CP, *PCSRSS_GET_CONSOLE_CP;
548
549 typedef struct
550 {
551 UINT CodePage;
552 } CSRSS_SET_CONSOLE_CP, *PCSRSS_SET_CONSOLE_CP;
553
554 typedef struct
555 {
556 UINT CodePage;
557 } CSRSS_GET_CONSOLE_OUTPUT_CP, *PCSRSS_GET_CONSOLE_OUTPUT_CP;
558
559 typedef struct
560 {
561 UINT CodePage;
562 } CSRSS_SET_CONSOLE_OUTPUT_CP, *PCSRSS_SET_CONSOLE_OUTPUT_CP;
563
564 typedef struct _CONSOLE_API_MESSAGE
565 {
566 PORT_MESSAGE Header;
567
568 PCSR_CAPTURE_BUFFER CsrCaptureData;
569 CSR_API_NUMBER ApiNumber;
570 ULONG Status; // ReturnValue; // NTSTATUS Status
571 ULONG Reserved;
572 union
573 {
574 CSRSS_ALLOC_CONSOLE AllocConsoleRequest;
575 CSRSS_FREE_CONSOLE FreeConsoleRequest;
576
577 /* Handles */
578 CSRSS_GET_INPUT_HANDLE GetInputHandleRequest;
579 CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest;
580 CSRSS_CLOSE_HANDLE CloseHandleRequest;
581 CSRSS_VERIFY_HANDLE VerifyHandleRequest;
582 CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest;
583 CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
584
585 /* Cursor */
586 CSRSS_SET_CURSOR SetCursorRequest;
587 CSRSS_GET_CURSOR_INFO GetCursorInfoRequest;
588 CSRSS_SET_CURSOR_INFO SetCursorInfoRequest;
589
590 CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest;
591
592 /* Screen buffer */
593 CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest;
594 CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest;
595 CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest;
596 CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize;
597 CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest;
598
599 CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo;
600
601 /* Console mode */
602 CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest;
603 CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest;
604 CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
605
606 /* Console window */
607 CSRSS_SET_TITLE SetTitleRequest;
608 CSRSS_GET_TITLE GetTitleRequest;
609 CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest;
610 CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest;
611
612 /* Read */
613 CSRSS_READ_CONSOLE ReadConsoleRequest; // SrvReadConsole / ReadConsole
614 CSRSS_GET_CONSOLE_INPUT GetConsoleInputRequest; // SrvGetConsoleInput / PeekConsoleInput & ReadConsoleInput
615 CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest; // SrvReadConsoleOutput / ReadConsoleOutput
616 CSRSS_READ_CONSOLE_OUTPUT_CODE ReadConsoleOutputCodeRequest; // SrvReadConsoleOutputString / ReadConsoleOutputAttribute & ReadConsoleOutputCharacter
617
618 /* Write */
619 CSRSS_WRITE_CONSOLE WriteConsoleRequest;
620 CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest;
621 CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest;
622 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest;
623 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest;
624
625 CSRSS_FILL_OUTPUT FillOutputRequest;
626 CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest;
627 CSRSS_SET_ATTRIB SetAttribRequest;
628
629 /* Aliases */
630 CSRSS_CONSOLE_ALIAS ConsoleAlias;
631 CSRSS_GET_ALL_CONSOLE_ALIASES GetAllConsoleAliases;
632 CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH GetAllConsoleAliasesLength;
633 CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes;
634 CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength;
635
636 /* History */
637 CSRSS_GET_COMMAND_HISTORY GetCommandHistory;
638 CSRSS_GET_COMMAND_HISTORY_LENGTH GetCommandHistoryLength;
639 CSRSS_EXPUNGE_COMMAND_HISTORY ExpungeCommandHistory;
640 CSRSS_SET_HISTORY_NUMBER_COMMANDS SetHistoryNumberCommands;
641 CSRSS_HISTORY_INFO HistoryInfoRequest;
642
643 CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent;
644 CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest;
645
646 /* CodePage */
647 CSRSS_GET_CONSOLE_CP GetConsoleCodePage;
648 CSRSS_SET_CONSOLE_CP SetConsoleCodePage;
649 CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage;
650 CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage;
651
652 CSRSS_GET_PROCESS_LIST GetProcessListRequest;
653 } Data;
654 } CONSOLE_API_MESSAGE, *PCONSOLE_API_MESSAGE;
655
656 #endif // _CONMSG_H
657
658 /* EOF */