[KERNEL32][CONSRV]
[reactos.git] / reactos / include / reactos / subsys / win / conmsg.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Console Server DLL
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 Server 2003 table from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
19 typedef enum _CONSRV_API_NUMBER
20 {
21 ConsolepOpenConsole = CONSRV_FIRST_API_NUMBER,
22 ConsolepGetConsoleInput,
23 ConsolepWriteConsoleInput,
24 ConsolepReadConsoleOutput,
25 ConsolepWriteConsoleOutput,
26 ConsolepReadConsoleOutputString,
27 ConsolepWriteConsoleOutputString,
28 ConsolepFillConsoleOutput,
29 ConsolepGetMode,
30 ConsolepGetNumberOfFonts,
31 ConsolepGetNumberOfInputEvents,
32 ConsolepGetScreenBufferInfo,
33 ConsolepGetCursorInfo,
34 ConsolepGetMouseInfo,
35 ConsolepGetFontInfo,
36 ConsolepGetFontSize,
37 ConsolepGetCurrentFont,
38 ConsolepSetMode,
39 ConsolepSetActiveScreenBuffer,
40 ConsolepFlushInputBuffer,
41 ConsolepGetLargestWindowSize,
42 ConsolepSetScreenBufferSize,
43 ConsolepSetCursorPosition,
44 ConsolepSetCursorInfo,
45 ConsolepSetWindowInfo,
46 ConsolepScrollScreenBuffer,
47 ConsolepSetTextAttribute,
48 ConsolepSetFont,
49 ConsolepSetIcon,
50 ConsolepReadConsole,
51 ConsolepWriteConsole,
52 ConsolepDuplicateHandle,
53 ConsolepGetHandleInformation,
54 ConsolepSetHandleInformation,
55 ConsolepCloseHandle,
56 ConsolepVerifyIoHandle,
57 ConsolepAlloc, // Not present in Win7
58 ConsolepFree, // Not present in Win7
59 ConsolepGetTitle,
60 ConsolepSetTitle,
61 ConsolepCreateScreenBuffer,
62 ConsolepInvalidateBitMapRect,
63 ConsolepVDMOperation,
64 ConsolepSetCursor,
65 ConsolepShowCursor,
66 ConsolepMenuControl,
67 ConsolepSetPalette,
68 ConsolepSetDisplayMode,
69 ConsolepRegisterVDM,
70 ConsolepGetHardwareState,
71 ConsolepSetHardwareState,
72 ConsolepGetDisplayMode,
73 ConsolepAddAlias,
74 ConsolepGetAlias,
75 ConsolepGetAliasesLength,
76 ConsolepGetAliasExesLength,
77 ConsolepGetAliases,
78 ConsolepGetAliasExes,
79 ConsolepExpungeCommandHistory,
80 ConsolepSetNumberOfCommands,
81 ConsolepGetCommandHistoryLength,
82 ConsolepGetCommandHistory,
83 ConsolepSetCommandHistoryMode, // Not present in Vista+
84 ConsolepGetCP,
85 ConsolepSetCP,
86 ConsolepSetKeyShortcuts,
87 ConsolepSetMenuClose,
88 ConsolepNotifyLastClose,
89 ConsolepGenerateCtrlEvent,
90 ConsolepGetKeyboardLayoutName,
91 ConsolepGetConsoleWindow,
92 ConsolepCharType,
93 ConsolepSetLocalEUDC,
94 ConsolepSetCursorMode,
95 ConsolepGetCursorMode,
96 ConsolepRegisterOS2,
97 ConsolepSetOS2OemFormat,
98 ConsolepGetNlsMode,
99 ConsolepSetNlsMode,
100 ConsolepRegisterConsoleIME, // Not present in Win7
101 ConsolepUnregisterConsoleIME, // Not present in Win7
102 // ConsolepQueryConsoleIME, // Added only in Vista and Win2k8, not present in Win7
103 ConsolepGetLangId,
104 ConsolepAttach, // Not present in Win7
105 ConsolepGetSelectionInfo,
106 ConsolepGetProcessList,
107
108 ConsolepGetHistory, // Added in Vista+
109 ConsolepSetHistory, // Added in Vista+
110 // ConsolepSetCurrentFont, // Added in Vista+
111 // ConsolepSetScreenBufferInfo, // Added in Vista+
112 // ConsolepClientConnect, // Added in Win7
113
114 ConsolepMaxApiNumber
115 } CONSRV_API_NUMBER, *PCONSRV_API_NUMBER;
116
117 //
118 // See http://msdn.microsoft.com/en-us/library/windows/desktop/bb773359(v=vs.85).aspx
119 //
120 typedef struct _CONSOLE_PROPERTIES
121 {
122 WORD wFillAttribute;
123 WORD wPopupFillAttribute;
124
125 //
126 // Not on MSDN, but show up in binary
127 //
128 WORD wShowWindow;
129 WORD wUnknown;
130
131 COORD dwScreenBufferSize;
132 COORD dwWindowSize;
133 COORD dwWindowOrigin;
134 DWORD nFont;
135 DWORD nInputBufferSize;
136 COORD dwFontSize;
137 UINT uFontFamily;
138 UINT uFontWeight;
139 WCHAR FaceName[LF_FACESIZE];
140 UINT uCursorSize;
141 BOOL bFullScreen;
142 BOOL bQuickEdit;
143 BOOL bInsertMode;
144 BOOL bAutoPosition;
145 UINT uHistoryBufferSize;
146 UINT uNumberOfHistoryBuffers;
147 BOOL bHistoryNoDup;
148 COLORREF ColorTable[16];
149
150 //NT_FE_CONSOLE_PROPS
151 UINT uCodePage;
152 } CONSOLE_PROPERTIES;
153
154 //
155 // To minimize code changes, some fields were put here even though they really only belong in
156 // CONSRV_API_CONNECTINFO. Do not change the ordering however, as it's required for Windows
157 // compatibility.
158 //
159 typedef struct _CONSOLE_START_INFO
160 {
161 INT IconIndex;
162 HICON IconHandle1;
163 HICON IconHandle2;
164 DWORD dwHotKey;
165 DWORD dwStartupFlags;
166 CONSOLE_PROPERTIES;
167 BOOLEAN ConsoleNeeded; // Used for GUI apps only.
168 LPTHREAD_START_ROUTINE CtrlDispatcher;
169 LPTHREAD_START_ROUTINE ImeDispatcher;
170 LPTHREAD_START_ROUTINE PropDispatcher;
171 ULONG TitleLength;
172 WCHAR ConsoleTitle[MAX_PATH + 1]; // Console title or full path to the startup shortcut
173 ULONG DesktopLength;
174 PWCHAR DesktopPath;
175 ULONG AppNameLength;
176 WCHAR AppPath[128]; // Full path of the launched app
177 ULONG IconPathLength;
178 WCHAR IconPath[MAX_PATH + 1]; // Path to the file containing the icon
179 } CONSOLE_START_INFO, *PCONSOLE_START_INFO;
180
181 typedef struct _CONSRV_API_CONNECTINFO
182 {
183 HANDLE ConsoleHandle;
184 HANDLE InputWaitHandle;
185 HANDLE InputHandle;
186 HANDLE OutputHandle;
187 HANDLE ErrorHandle;
188 HANDLE Event1;
189 HANDLE Event2;
190 /* Adapted from CONSOLE_ALLOCCONSOLE */
191 CONSOLE_START_INFO ConsoleStartInfo;
192 } CONSRV_API_CONNECTINFO, *PCONSRV_API_CONNECTINFO;
193
194 C_ASSERT(sizeof(CONSRV_API_CONNECTINFO) == 0x638);
195
196 typedef struct
197 {
198 ULONG nMaxIds;
199 ULONG nProcessIdsTotal;
200 PDWORD pProcessIds;
201 } CONSOLE_GETPROCESSLIST, *PCONSOLE_GETPROCESSLIST;
202
203 typedef struct
204 {
205 HANDLE OutputHandle;
206
207 BOOL Unicode;
208 ULONG NrCharactersToWrite;
209 ULONG NrCharactersWritten;
210
211 ULONG BufferSize;
212 PVOID Buffer;
213 } CONSOLE_WRITECONSOLE, *PCONSOLE_WRITECONSOLE;
214
215 typedef struct
216 {
217 HANDLE InputHandle;
218
219 BOOL Unicode;
220 ULONG NrCharactersToRead;
221 ULONG NrCharactersRead;
222
223 UNICODE_STRING ExeName;
224 DWORD CtrlWakeupMask;
225 DWORD ControlKeyState;
226
227 ULONG BufferSize;
228 PVOID Buffer;
229 } CONSOLE_READCONSOLE, *PCONSOLE_READCONSOLE;
230
231 typedef struct
232 {
233 PCONSOLE_START_INFO ConsoleStartInfo;
234
235 HANDLE ConsoleHandle;
236 HANDLE InputHandle;
237 HANDLE OutputHandle;
238 HANDLE ErrorHandle;
239 HANDLE InputWaitHandle;
240 LPTHREAD_START_ROUTINE CtrlDispatcher;
241 LPTHREAD_START_ROUTINE PropDispatcher;
242 } CONSOLE_ALLOCCONSOLE, *PCONSOLE_ALLOCCONSOLE;
243
244 typedef struct
245 {
246 DWORD ProcessId; // If ProcessId == ATTACH_PARENT_PROCESS == -1, then attach the current process to its parent process console.
247 HANDLE ConsoleHandle;
248 HANDLE InputHandle;
249 HANDLE OutputHandle;
250 HANDLE ErrorHandle;
251 HANDLE InputWaitHandle;
252 LPTHREAD_START_ROUTINE CtrlDispatcher;
253 LPTHREAD_START_ROUTINE PropDispatcher;
254 } CONSOLE_ATTACHCONSOLE, *PCONSOLE_ATTACHCONSOLE;
255
256 typedef struct
257 {
258 ULONG Dummy;
259 } CONSOLE_FREECONSOLE, *PCONSOLE_FREECONSOLE;
260
261 typedef struct
262 {
263 HANDLE OutputHandle;
264 CONSOLE_SCREEN_BUFFER_INFO Info;
265 } CONSOLE_GETSCREENBUFFERINFO, *PCONSOLE_GETSCREENBUFFERINFO;
266
267 typedef struct
268 {
269 HANDLE OutputHandle;
270 COORD Position;
271 } CONSOLE_SETCURSORPOSITION, *PCONSOLE_SETCURSORPOSITION;
272
273 typedef struct
274 {
275 HANDLE OutputHandle;
276 BOOL Show;
277 INT RefCount;
278 } CONSOLE_SHOWCURSOR, *PCONSOLE_SHOWCURSOR;
279
280 typedef struct
281 {
282 HANDLE OutputHandle;
283 HCURSOR hCursor;
284 } CONSOLE_SETCURSOR, *PCONSOLE_SETCURSOR;
285
286 typedef struct
287 {
288 HANDLE OutputHandle;
289 CONSOLE_CURSOR_INFO Info;
290 } CONSOLE_GETSETCURSORINFO, *PCONSOLE_GETSETCURSORINFO;
291
292 typedef struct
293 {
294 HANDLE OutputHandle;
295 WORD Attrib;
296 } CONSOLE_SETTEXTATTRIB, *PCONSOLE_SETTEXTATTRIB;
297
298 typedef struct
299 {
300 HANDLE ConsoleHandle; /* A valid input or output console handle */
301 DWORD ConsoleMode;
302 } CONSOLE_GETSETCONSOLEMODE, *PCONSOLE_GETSETCONSOLEMODE;
303
304 typedef struct
305 {
306 // HANDLE OutputHandle;
307 DWORD DisplayMode;
308 } CONSOLE_GETDISPLAYMODE, *PCONSOLE_GETDISPLAYMODE;
309
310 typedef struct
311 {
312 HANDLE OutputHandle;
313 DWORD DisplayMode;
314 COORD NewSBDim;
315 } CONSOLE_SETDISPLAYMODE, *PCONSOLE_SETDISPLAYMODE;
316
317 /*
318 * Console hardware states.
319 */
320 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
321 #define CONSOLE_HARDWARE_STATE_DIRECT 1
322
323 typedef struct
324 {
325 HANDLE OutputHandle;
326 DWORD State;
327 } CONSOLE_GETSETHWSTATE, *PCONSOLE_GETSETHWSTATE;
328
329
330 typedef struct
331 {
332 HANDLE OutputHandle; /* Handle to newly created screen buffer */
333 DWORD ScreenBufferType; /* Type of the screen buffer: CONSOLE_TEXTMODE_BUFFER or CONSOLE_GRAPHICS_BUFFER */
334 /*
335 * If we are creating a graphics screen buffer,
336 * this structure holds the initialization information.
337 */
338 CONSOLE_GRAPHICS_BUFFER_INFO GraphicsBufferInfo;
339
340 DWORD Access;
341 DWORD ShareMode;
342 BOOL Inheritable;
343 } CONSOLE_CREATESCREENBUFFER, *PCONSOLE_CREATESCREENBUFFER;
344
345 typedef struct
346 {
347 HANDLE OutputHandle; /* Handle to screen buffer to switch to */
348 } CONSOLE_SETACTIVESCREENBUFFER, *PCONSOLE_SETACTIVESCREENBUFFER;
349
350 typedef struct
351 {
352 HANDLE OutputHandle;
353 SMALL_RECT Region;
354 } CONSOLE_INVALIDATEDIBITS, *PCONSOLE_INVALIDATEDIBITS;
355
356 typedef struct
357 {
358 HANDLE OutputHandle;
359 HPALETTE PaletteHandle;
360 UINT Usage;
361 } CONSOLE_SETPALETTE, *PCONSOLE_SETPALETTE;
362
363 typedef struct
364 {
365 DWORD Length;
366 PWCHAR Title;
367 } CONSOLE_GETSETCONSOLETITLE, *PCONSOLE_GETSETCONSOLETITLE;
368
369 typedef struct
370 {
371 HANDLE OutputHandle;
372
373 BOOL Unicode;
374 COORD BufferSize;
375 COORD BufferCoord;
376 SMALL_RECT WriteRegion;
377 PCHAR_INFO CharInfo;
378 } CONSOLE_WRITEOUTPUT, *PCONSOLE_WRITEOUTPUT;
379
380 typedef struct
381 {
382 HANDLE InputHandle;
383 } CONSOLE_FLUSHINPUTBUFFER, *PCONSOLE_FLUSHINPUTBUFFER;
384
385 typedef struct
386 {
387 HANDLE OutputHandle;
388
389 BOOL Unicode;
390 SMALL_RECT ScrollRectangle;
391 BOOL UseClipRectangle;
392 SMALL_RECT ClipRectangle;
393 COORD DestinationOrigin;
394 CHAR_INFO Fill;
395 } CONSOLE_SCROLLSCREENBUFFER, *PCONSOLE_SCROLLSCREENBUFFER;
396
397
398 /*
399 * An attribute or a character are instances of the same entity, namely
400 * a "code" (what would be called an (ANSI) escape sequence). Therefore
401 * encode them inside the same structure.
402 */
403 typedef enum _CODE_TYPE
404 {
405 CODE_ASCII = 0x01,
406 CODE_UNICODE = 0x02,
407 CODE_ATTRIBUTE = 0x03
408 } CODE_TYPE;
409
410 typedef struct
411 {
412 HANDLE OutputHandle;
413
414 DWORD NumCodesToRead;
415 COORD ReadCoord;
416 COORD EndCoord;
417
418 DWORD CodesRead;
419
420 CODE_TYPE CodeType;
421 union
422 {
423 PVOID pCode;
424 PCHAR AsciiChar;
425 PWCHAR UnicodeChar;
426 PWORD Attribute;
427 } pCode; // Either a pointer to a character or to an attribute.
428 } CONSOLE_READOUTPUTCODE, *PCONSOLE_READOUTPUTCODE;
429
430 typedef struct
431 {
432 HANDLE OutputHandle;
433
434 ULONG BufferSize; // Seems unusued
435 WORD Length;
436 COORD Coord;
437 COORD EndCoord;
438
439 ULONG NrCharactersWritten; // Seems unusued
440
441 CODE_TYPE CodeType;
442 union
443 {
444 PVOID pCode;
445 PCHAR AsciiChar;
446 PWCHAR UnicodeChar;
447 PWORD Attribute;
448 } pCode; // Either a pointer to a character or to an attribute.
449 } CONSOLE_WRITEOUTPUTCODE, *PCONSOLE_WRITEOUTPUTCODE;
450
451 typedef struct
452 {
453 HANDLE OutputHandle;
454
455 CODE_TYPE CodeType;
456 union
457 {
458 CHAR AsciiChar;
459 WCHAR UnicodeChar;
460 WORD Attribute;
461 } Code; // Either a character or an attribute.
462
463 COORD Coord;
464 ULONG Length;
465
466 ULONG NrCharactersWritten; // FIXME: Only for chars, is it removable ?
467 } CONSOLE_FILLOUTPUTCODE, *PCONSOLE_FILLOUTPUTCODE;
468
469 typedef struct
470 {
471 HANDLE InputHandle;
472 ULONG InputsRead;
473 PINPUT_RECORD InputRecord;
474 ULONG Length;
475 WORD wFlags;
476 BOOLEAN Unicode;
477 } CONSOLE_GETINPUT, *PCONSOLE_GETINPUT;
478
479 typedef struct
480 {
481 HANDLE OutputHandle;
482
483 BOOL Unicode;
484 COORD BufferSize;
485 COORD BufferCoord;
486 SMALL_RECT ReadRegion;
487 PCHAR_INFO CharInfo;
488 } CONSOLE_READOUTPUT, *PCONSOLE_READOUTPUT;
489
490 typedef struct
491 {
492 HANDLE InputHandle;
493 DWORD Length;
494 INPUT_RECORD* InputRecord;
495 BOOL Unicode;
496 BOOL AppendToEnd;
497 } CONSOLE_WRITEINPUT, *PCONSOLE_WRITEINPUT;
498
499 typedef struct
500 {
501 HANDLE ConsoleHandle;
502 } CONSOLE_CLOSEHANDLE, *PCONSOLE_CLOSEHANDLE;
503
504 typedef struct
505 {
506 HANDLE ConsoleHandle;
507 } CONSOLE_VERIFYHANDLE, *PCONSOLE_VERIFYHANDLE;
508
509 typedef struct
510 {
511 HANDLE ConsoleHandle;
512 DWORD Access;
513 BOOL Inheritable;
514 DWORD Options;
515 } CONSOLE_DUPLICATEHANDLE, *PCONSOLE_DUPLICATEHANDLE;
516
517 /*
518 * Type of handles.
519 */
520 typedef enum _CONSOLE_HANDLE_TYPE
521 {
522 HANDLE_INPUT = 0x01,
523 HANDLE_OUTPUT = 0x02
524 } CONSOLE_HANDLE_TYPE;
525
526 typedef struct
527 {
528 HANDLE ConsoleHandle;
529 CONSOLE_HANDLE_TYPE HandleType;
530 DWORD Access;
531 BOOL Inheritable;
532 DWORD ShareMode;
533 } CONSOLE_OPENCONSOLE, *PCONSOLE_OPENCONSOLE;
534
535
536 typedef struct
537 {
538 HANDLE OutputHandle;
539 COORD Size;
540 } CONSOLE_GETLARGESTWINDOWSIZE, *PCONSOLE_GETLARGESTWINDOWSIZE;
541
542 typedef struct
543 {
544 HANDLE OutputHandle;
545 DWORD dwCmdIdLow;
546 DWORD dwCmdIdHigh;
547 HMENU hMenu;
548 } CONSOLE_MENUCONTROL, *PCONSOLE_MENUCONTROL;
549
550 typedef struct
551 {
552 BOOL Enable;
553 } CONSOLE_SETMENUCLOSE, *PCONSOLE_SETMENUCLOSE;
554
555 typedef struct
556 {
557 HANDLE OutputHandle;
558 BOOL Absolute;
559 SMALL_RECT WindowRect; // New console window position in the screen-buffer frame (Absolute == TRUE)
560 // or in the old window position frame (Absolute == FALSE).
561 } CONSOLE_SETWINDOWINFO, *PCONSOLE_SETWINDOWINFO;
562
563 typedef struct
564 {
565 HWND WindowHandle;
566 } CONSOLE_GETWINDOW, *PCONSOLE_GETWINDOW;
567
568 typedef struct
569 {
570 HICON WindowIcon;
571 } CONSOLE_SETICON, *PCONSOLE_SETICON;
572
573
574
575 typedef struct
576 {
577 ULONG SourceLength;
578 ULONG TargetLength; // Also used for storing the number of bytes written.
579 ULONG ExeLength;
580 LPWSTR Source;
581 LPWSTR Target;
582 LPWSTR Exe;
583 } CONSOLE_ADDGETALIAS, *PCONSOLE_ADDGETALIAS;
584
585 typedef struct
586 {
587 DWORD ExeLength;
588 DWORD AliasesBufferLength;
589 LPWSTR ExeName;
590 LPWSTR AliasesBuffer;
591 } CONSOLE_GETALLALIASES, *PCONSOLE_GETALLALIASES;
592
593 typedef struct
594 {
595 DWORD Length;
596 DWORD ExeLength;
597 LPWSTR ExeName;
598 } CONSOLE_GETALLALIASESLENGTH, *PCONSOLE_GETALLALIASESLENGTH;
599
600 typedef struct
601 {
602 DWORD Length;
603 LPWSTR ExeNames;
604 } CONSOLE_GETALIASESEXES, *PCONSOLE_GETALIASESEXES;
605
606 typedef struct
607 {
608 DWORD Length;
609 } CONSOLE_GETALIASESEXESLENGTH, *PCONSOLE_GETALIASESEXESLENGTH;
610
611
612
613 typedef struct
614 {
615 UNICODE_STRING ExeName;
616 PWCHAR History;
617 DWORD Length;
618 } CONSOLE_GETCOMMANDHISTORY, *PCONSOLE_GETCOMMANDHISTORY;
619
620 typedef struct
621 {
622 UNICODE_STRING ExeName;
623 DWORD Length;
624 } CONSOLE_GETCOMMANDHISTORYLENGTH, *PCONSOLE_GETCOMMANDHISTORYLENGTH;
625
626 typedef struct
627 {
628 UNICODE_STRING ExeName;
629 } CONSOLE_EXPUNGECOMMANDHISTORY, *PCONSOLE_EXPUNGECOMMANDHISTORY;
630
631 typedef struct
632 {
633 UNICODE_STRING ExeName;
634 DWORD NumCommands;
635 } CONSOLE_SETHISTORYNUMBERCOMMANDS, *PCONSOLE_SETHISTORYNUMBERCOMMANDS;
636
637 typedef struct
638 {
639 UINT HistoryBufferSize;
640 UINT NumberOfHistoryBuffers;
641 DWORD dwFlags;
642 } CONSOLE_GETSETHISTORYINFO, *PCONSOLE_GETSETHISTORYINFO;
643
644
645
646 typedef struct
647 {
648 DWORD Event;
649 DWORD ProcessGroup;
650 } CONSOLE_GENERATECTRLEVENT, *PCONSOLE_GENERATECTRLEVENT;
651
652 typedef struct
653 {
654 HANDLE InputHandle;
655 DWORD NumInputEvents;
656 } CONSOLE_GETNUMINPUTEVENTS, *PCONSOLE_GETNUMINPUTEVENTS;
657
658 typedef struct
659 {
660 HANDLE OutputHandle;
661 COORD Size;
662 } CONSOLE_SETSCREENBUFFERSIZE, *PCONSOLE_SETSCREENBUFFERSIZE;
663
664 typedef struct
665 {
666 CONSOLE_SELECTION_INFO Info;
667 } CONSOLE_GETSELECTIONINFO, *PCONSOLE_GETSELECTIONINFO;
668
669 typedef struct
670 {
671 BOOL InputCP; // TRUE : Input Code Page ; FALSE : Output Code Page
672 UINT CodePage;
673 } CONSOLE_GETSETINPUTOUTPUTCP, *PCONSOLE_GETSETINPUTOUTPUTCP;
674
675 typedef struct _CONSOLE_API_MESSAGE
676 {
677 PORT_MESSAGE Header;
678
679 PCSR_CAPTURE_BUFFER CsrCaptureData;
680 CSR_API_NUMBER ApiNumber;
681 NTSTATUS Status;
682 ULONG Reserved;
683 union
684 {
685 /* Console initialization and uninitialization */
686 CONSOLE_ALLOCCONSOLE AllocConsoleRequest;
687 CONSOLE_ATTACHCONSOLE AttachConsoleRequest;
688 CONSOLE_FREECONSOLE FreeConsoleRequest;
689
690 /* Process list */
691 CONSOLE_GETPROCESSLIST GetProcessListRequest;
692
693 /* Handles */
694 CONSOLE_OPENCONSOLE OpenConsoleRequest;
695 CONSOLE_CLOSEHANDLE CloseHandleRequest;
696 CONSOLE_VERIFYHANDLE VerifyHandleRequest;
697 CONSOLE_DUPLICATEHANDLE DuplicateHandleRequest;
698
699 /* Cursor */
700 CONSOLE_SHOWCURSOR ShowCursorRequest;
701 CONSOLE_SETCURSOR SetCursorRequest;
702 CONSOLE_GETSETCURSORINFO CursorInfoRequest;
703 CONSOLE_SETCURSORPOSITION SetCursorPositionRequest;
704
705 /* Screen-buffer */
706 CONSOLE_CREATESCREENBUFFER CreateScreenBufferRequest;
707 CONSOLE_SETACTIVESCREENBUFFER SetScreenBufferRequest;
708 CONSOLE_GETSCREENBUFFERINFO ScreenBufferInfoRequest;
709 CONSOLE_SETSCREENBUFFERSIZE SetScreenBufferSizeRequest;
710 CONSOLE_SCROLLSCREENBUFFER ScrollScreenBufferRequest;
711
712 CONSOLE_GETSELECTIONINFO GetSelectionInfoRequest;
713 CONSOLE_FLUSHINPUTBUFFER FlushInputBufferRequest;
714
715 /* Console mode */
716 CONSOLE_GETSETCONSOLEMODE ConsoleModeRequest;
717 CONSOLE_GETDISPLAYMODE GetDisplayModeRequest;
718 CONSOLE_SETDISPLAYMODE SetDisplayModeRequest;
719 CONSOLE_GETSETHWSTATE HardwareStateRequest;
720
721 /* Console window */
722 CONSOLE_INVALIDATEDIBITS InvalidateDIBitsRequest;
723 CONSOLE_SETPALETTE SetPaletteRequest;
724 CONSOLE_GETSETCONSOLETITLE TitleRequest;
725 CONSOLE_GETLARGESTWINDOWSIZE GetLargestWindowSizeRequest;
726 CONSOLE_MENUCONTROL MenuControlRequest;
727 CONSOLE_SETMENUCLOSE SetMenuCloseRequest;
728 CONSOLE_SETWINDOWINFO SetWindowInfoRequest;
729 CONSOLE_GETWINDOW GetWindowRequest;
730 CONSOLE_SETICON SetIconRequest;
731
732 /* Read */
733 CONSOLE_READCONSOLE ReadConsoleRequest; // SrvReadConsole / ReadConsole
734 CONSOLE_GETINPUT GetInputRequest; // SrvGetConsoleInput / PeekConsoleInput & ReadConsoleInput
735 CONSOLE_READOUTPUT ReadOutputRequest; // SrvReadConsoleOutput / ReadConsoleOutput
736 CONSOLE_READOUTPUTCODE ReadOutputCodeRequest; // SrvReadConsoleOutputString / ReadConsoleOutputAttribute & ReadConsoleOutputCharacter
737
738 /* Write */
739 CONSOLE_WRITECONSOLE WriteConsoleRequest; // SrvWriteConsole / WriteConsole
740 CONSOLE_WRITEINPUT WriteInputRequest;
741 CONSOLE_WRITEOUTPUT WriteOutputRequest;
742 CONSOLE_WRITEOUTPUTCODE WriteOutputCodeRequest;
743
744 CONSOLE_FILLOUTPUTCODE FillOutputRequest;
745 CONSOLE_SETTEXTATTRIB SetTextAttribRequest;
746
747 /* Aliases */
748 CONSOLE_ADDGETALIAS ConsoleAliasRequest;
749 CONSOLE_GETALLALIASES GetAllAliasesRequest;
750 CONSOLE_GETALLALIASESLENGTH GetAllAliasesLengthRequest;
751 CONSOLE_GETALIASESEXES GetAliasesExesRequest;
752 CONSOLE_GETALIASESEXESLENGTH GetAliasesExesLengthRequest;
753
754 /* History */
755 CONSOLE_GETCOMMANDHISTORY GetCommandHistoryRequest;
756 CONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest;
757 CONSOLE_EXPUNGECOMMANDHISTORY ExpungeCommandHistoryRequest;
758 CONSOLE_SETHISTORYNUMBERCOMMANDS SetHistoryNumberCommandsRequest;
759 CONSOLE_GETSETHISTORYINFO HistoryInfoRequest;
760
761 CONSOLE_GENERATECTRLEVENT GenerateCtrlEventRequest;
762 CONSOLE_GETNUMINPUTEVENTS GetNumInputEventsRequest;
763
764 /* Input and Output Code Pages */
765 CONSOLE_GETSETINPUTOUTPUTCP ConsoleCPRequest;
766 } Data;
767 } CONSOLE_API_MESSAGE, *PCONSOLE_API_MESSAGE;
768
769 // Check that a CONSOLE_API_MESSAGE can hold in a CSR_API_MESSAGE.
770 CHECK_API_MSG_SIZE(CONSOLE_API_MESSAGE);
771
772 #endif // _CONMSG_H
773
774 /* EOF */