[DESK.CPL]
[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 BOOL Unicode;
473 BOOL bRead; // TRUE --> Read ; FALSE --> Peek
474
475 ULONG InputsRead;
476
477 ULONG Length;
478 PINPUT_RECORD InputRecord;
479 } CONSOLE_GETINPUT, *PCONSOLE_GETINPUT;
480
481 typedef struct
482 {
483 HANDLE OutputHandle;
484
485 BOOL Unicode;
486 COORD BufferSize;
487 COORD BufferCoord;
488 SMALL_RECT ReadRegion;
489 PCHAR_INFO CharInfo;
490 } CONSOLE_READOUTPUT, *PCONSOLE_READOUTPUT;
491
492 typedef struct
493 {
494 HANDLE InputHandle;
495 DWORD Length;
496 INPUT_RECORD* InputRecord;
497 BOOL Unicode;
498 BOOL AppendToEnd;
499 } CONSOLE_WRITEINPUT, *PCONSOLE_WRITEINPUT;
500
501 typedef struct
502 {
503 HANDLE ConsoleHandle;
504 } CONSOLE_CLOSEHANDLE, *PCONSOLE_CLOSEHANDLE;
505
506 typedef struct
507 {
508 HANDLE ConsoleHandle;
509 } CONSOLE_VERIFYHANDLE, *PCONSOLE_VERIFYHANDLE;
510
511 typedef struct
512 {
513 HANDLE ConsoleHandle;
514 DWORD Access;
515 BOOL Inheritable;
516 DWORD Options;
517 } CONSOLE_DUPLICATEHANDLE, *PCONSOLE_DUPLICATEHANDLE;
518
519 /*
520 * Type of handles.
521 */
522 typedef enum _CONSOLE_HANDLE_TYPE
523 {
524 HANDLE_INPUT = 0x01,
525 HANDLE_OUTPUT = 0x02
526 } CONSOLE_HANDLE_TYPE;
527
528 typedef struct
529 {
530 HANDLE ConsoleHandle;
531 CONSOLE_HANDLE_TYPE HandleType;
532 DWORD Access;
533 BOOL Inheritable;
534 DWORD ShareMode;
535 } CONSOLE_OPENCONSOLE, *PCONSOLE_OPENCONSOLE;
536
537
538 typedef struct
539 {
540 HANDLE OutputHandle;
541 COORD Size;
542 } CONSOLE_GETLARGESTWINDOWSIZE, *PCONSOLE_GETLARGESTWINDOWSIZE;
543
544 typedef struct
545 {
546 HANDLE OutputHandle;
547 DWORD dwCmdIdLow;
548 DWORD dwCmdIdHigh;
549 HMENU hMenu;
550 } CONSOLE_MENUCONTROL, *PCONSOLE_MENUCONTROL;
551
552 typedef struct
553 {
554 BOOL Enable;
555 } CONSOLE_SETMENUCLOSE, *PCONSOLE_SETMENUCLOSE;
556
557 typedef struct
558 {
559 HANDLE OutputHandle;
560 BOOL Absolute;
561 SMALL_RECT WindowRect; // New console window position in the screen-buffer frame (Absolute == TRUE)
562 // or in the old window position frame (Absolute == FALSE).
563 } CONSOLE_SETWINDOWINFO, *PCONSOLE_SETWINDOWINFO;
564
565 typedef struct
566 {
567 HWND WindowHandle;
568 } CONSOLE_GETWINDOW, *PCONSOLE_GETWINDOW;
569
570 typedef struct
571 {
572 HICON WindowIcon;
573 } CONSOLE_SETICON, *PCONSOLE_SETICON;
574
575
576
577 typedef struct
578 {
579 ULONG SourceLength;
580 ULONG TargetLength; // Also used for storing the number of bytes written.
581 ULONG ExeLength;
582 LPWSTR Source;
583 LPWSTR Target;
584 LPWSTR Exe;
585 } CONSOLE_ADDGETALIAS, *PCONSOLE_ADDGETALIAS;
586
587 typedef struct
588 {
589 DWORD ExeLength;
590 DWORD AliasesBufferLength;
591 LPWSTR ExeName;
592 LPWSTR AliasesBuffer;
593 } CONSOLE_GETALLALIASES, *PCONSOLE_GETALLALIASES;
594
595 typedef struct
596 {
597 DWORD Length;
598 DWORD ExeLength;
599 LPWSTR ExeName;
600 } CONSOLE_GETALLALIASESLENGTH, *PCONSOLE_GETALLALIASESLENGTH;
601
602 typedef struct
603 {
604 DWORD Length;
605 LPWSTR ExeNames;
606 } CONSOLE_GETALIASESEXES, *PCONSOLE_GETALIASESEXES;
607
608 typedef struct
609 {
610 DWORD Length;
611 } CONSOLE_GETALIASESEXESLENGTH, *PCONSOLE_GETALIASESEXESLENGTH;
612
613
614
615 typedef struct
616 {
617 UNICODE_STRING ExeName;
618 PWCHAR History;
619 DWORD Length;
620 } CONSOLE_GETCOMMANDHISTORY, *PCONSOLE_GETCOMMANDHISTORY;
621
622 typedef struct
623 {
624 UNICODE_STRING ExeName;
625 DWORD Length;
626 } CONSOLE_GETCOMMANDHISTORYLENGTH, *PCONSOLE_GETCOMMANDHISTORYLENGTH;
627
628 typedef struct
629 {
630 UNICODE_STRING ExeName;
631 } CONSOLE_EXPUNGECOMMANDHISTORY, *PCONSOLE_EXPUNGECOMMANDHISTORY;
632
633 typedef struct
634 {
635 UNICODE_STRING ExeName;
636 DWORD NumCommands;
637 } CONSOLE_SETHISTORYNUMBERCOMMANDS, *PCONSOLE_SETHISTORYNUMBERCOMMANDS;
638
639 typedef struct
640 {
641 UINT HistoryBufferSize;
642 UINT NumberOfHistoryBuffers;
643 DWORD dwFlags;
644 } CONSOLE_GETSETHISTORYINFO, *PCONSOLE_GETSETHISTORYINFO;
645
646
647
648 typedef struct
649 {
650 DWORD Event;
651 DWORD ProcessGroup;
652 } CONSOLE_GENERATECTRLEVENT, *PCONSOLE_GENERATECTRLEVENT;
653
654 typedef struct
655 {
656 HANDLE InputHandle;
657 DWORD NumInputEvents;
658 } CONSOLE_GETNUMINPUTEVENTS, *PCONSOLE_GETNUMINPUTEVENTS;
659
660 typedef struct
661 {
662 HANDLE OutputHandle;
663 COORD Size;
664 } CONSOLE_SETSCREENBUFFERSIZE, *PCONSOLE_SETSCREENBUFFERSIZE;
665
666 typedef struct
667 {
668 CONSOLE_SELECTION_INFO Info;
669 } CONSOLE_GETSELECTIONINFO, *PCONSOLE_GETSELECTIONINFO;
670
671 typedef struct
672 {
673 BOOL InputCP; // TRUE : Input Code Page ; FALSE : Output Code Page
674 UINT CodePage;
675 } CONSOLE_GETSETINPUTOUTPUTCP, *PCONSOLE_GETSETINPUTOUTPUTCP;
676
677 typedef struct _CONSOLE_API_MESSAGE
678 {
679 PORT_MESSAGE Header;
680
681 PCSR_CAPTURE_BUFFER CsrCaptureData;
682 CSR_API_NUMBER ApiNumber;
683 NTSTATUS Status;
684 ULONG Reserved;
685 union
686 {
687 /* Console initialization and uninitialization */
688 CONSOLE_ALLOCCONSOLE AllocConsoleRequest;
689 CONSOLE_ATTACHCONSOLE AttachConsoleRequest;
690 CONSOLE_FREECONSOLE FreeConsoleRequest;
691
692 /* Process list */
693 CONSOLE_GETPROCESSLIST GetProcessListRequest;
694
695 /* Handles */
696 CONSOLE_OPENCONSOLE OpenConsoleRequest;
697 CONSOLE_CLOSEHANDLE CloseHandleRequest;
698 CONSOLE_VERIFYHANDLE VerifyHandleRequest;
699 CONSOLE_DUPLICATEHANDLE DuplicateHandleRequest;
700
701 /* Cursor */
702 CONSOLE_SHOWCURSOR ShowCursorRequest;
703 CONSOLE_SETCURSOR SetCursorRequest;
704 CONSOLE_GETSETCURSORINFO CursorInfoRequest;
705 CONSOLE_SETCURSORPOSITION SetCursorPositionRequest;
706
707 /* Screen-buffer */
708 CONSOLE_CREATESCREENBUFFER CreateScreenBufferRequest;
709 CONSOLE_SETACTIVESCREENBUFFER SetScreenBufferRequest;
710 CONSOLE_GETSCREENBUFFERINFO ScreenBufferInfoRequest;
711 CONSOLE_SETSCREENBUFFERSIZE SetScreenBufferSizeRequest;
712 CONSOLE_SCROLLSCREENBUFFER ScrollScreenBufferRequest;
713
714 CONSOLE_GETSELECTIONINFO GetSelectionInfoRequest;
715 CONSOLE_FLUSHINPUTBUFFER FlushInputBufferRequest;
716
717 /* Console mode */
718 CONSOLE_GETSETCONSOLEMODE ConsoleModeRequest;
719 CONSOLE_GETDISPLAYMODE GetDisplayModeRequest;
720 CONSOLE_SETDISPLAYMODE SetDisplayModeRequest;
721 CONSOLE_GETSETHWSTATE HardwareStateRequest;
722
723 /* Console window */
724 CONSOLE_INVALIDATEDIBITS InvalidateDIBitsRequest;
725 CONSOLE_SETPALETTE SetPaletteRequest;
726 CONSOLE_GETSETCONSOLETITLE TitleRequest;
727 CONSOLE_GETLARGESTWINDOWSIZE GetLargestWindowSizeRequest;
728 CONSOLE_MENUCONTROL MenuControlRequest;
729 CONSOLE_SETMENUCLOSE SetMenuCloseRequest;
730 CONSOLE_SETWINDOWINFO SetWindowInfoRequest;
731 CONSOLE_GETWINDOW GetWindowRequest;
732 CONSOLE_SETICON SetIconRequest;
733
734 /* Read */
735 CONSOLE_READCONSOLE ReadConsoleRequest; // SrvReadConsole / ReadConsole
736 CONSOLE_GETINPUT GetInputRequest; // SrvGetConsoleInput / PeekConsoleInput & ReadConsoleInput
737 CONSOLE_READOUTPUT ReadOutputRequest; // SrvReadConsoleOutput / ReadConsoleOutput
738 CONSOLE_READOUTPUTCODE ReadOutputCodeRequest; // SrvReadConsoleOutputString / ReadConsoleOutputAttribute & ReadConsoleOutputCharacter
739
740 /* Write */
741 CONSOLE_WRITECONSOLE WriteConsoleRequest; // SrvWriteConsole / WriteConsole
742 CONSOLE_WRITEINPUT WriteInputRequest;
743 CONSOLE_WRITEOUTPUT WriteOutputRequest;
744 CONSOLE_WRITEOUTPUTCODE WriteOutputCodeRequest;
745
746 CONSOLE_FILLOUTPUTCODE FillOutputRequest;
747 CONSOLE_SETTEXTATTRIB SetTextAttribRequest;
748
749 /* Aliases */
750 CONSOLE_ADDGETALIAS ConsoleAliasRequest;
751 CONSOLE_GETALLALIASES GetAllAliasesRequest;
752 CONSOLE_GETALLALIASESLENGTH GetAllAliasesLengthRequest;
753 CONSOLE_GETALIASESEXES GetAliasesExesRequest;
754 CONSOLE_GETALIASESEXESLENGTH GetAliasesExesLengthRequest;
755
756 /* History */
757 CONSOLE_GETCOMMANDHISTORY GetCommandHistoryRequest;
758 CONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest;
759 CONSOLE_EXPUNGECOMMANDHISTORY ExpungeCommandHistoryRequest;
760 CONSOLE_SETHISTORYNUMBERCOMMANDS SetHistoryNumberCommandsRequest;
761 CONSOLE_GETSETHISTORYINFO HistoryInfoRequest;
762
763 CONSOLE_GENERATECTRLEVENT GenerateCtrlEventRequest;
764 CONSOLE_GETNUMINPUTEVENTS GetNumInputEventsRequest;
765
766 /* Input and Output Code Pages */
767 CONSOLE_GETSETINPUTOUTPUTCP ConsoleCPRequest;
768 } Data;
769 } CONSOLE_API_MESSAGE, *PCONSOLE_API_MESSAGE;
770
771 // Check that a CONSOLE_API_MESSAGE can hold in a CSR_API_MESSAGE.
772 CHECK_API_MSG_SIZE(CONSOLE_API_MESSAGE);
773
774 #endif // _CONMSG_H
775
776 /* EOF */