04bb3bd65b53d6814445ac0bc723a994823d767c
[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 #if defined(_M_IX86)
195 C_ASSERT(sizeof(CONSRV_API_CONNECTINFO) == 0x638);
196 #endif
197
198 typedef struct
199 {
200 HANDLE ConsoleHandle;
201 ULONG ProcessCount;
202 PDWORD ProcessIdsList;
203 } CONSOLE_GETPROCESSLIST, *PCONSOLE_GETPROCESSLIST;
204
205 typedef struct
206 {
207 HANDLE OutputHandle;
208
209 BOOL Unicode;
210 ULONG NrCharactersToWrite;
211 ULONG NrCharactersWritten;
212
213 ULONG BufferSize;
214 PVOID Buffer;
215 } CONSOLE_WRITECONSOLE, *PCONSOLE_WRITECONSOLE;
216
217 typedef struct
218 {
219 HANDLE InputHandle;
220
221 BOOL Unicode;
222 ULONG NrCharactersToRead;
223 ULONG NrCharactersRead;
224
225 UNICODE_STRING ExeName;
226 DWORD CtrlWakeupMask;
227 DWORD ControlKeyState;
228
229 ULONG BufferSize;
230 PVOID Buffer;
231 } CONSOLE_READCONSOLE, *PCONSOLE_READCONSOLE;
232
233 typedef struct
234 {
235 PCONSOLE_START_INFO ConsoleStartInfo;
236
237 HANDLE ConsoleHandle;
238 HANDLE InputHandle;
239 HANDLE OutputHandle;
240 HANDLE ErrorHandle;
241 HANDLE InputWaitHandle;
242 LPTHREAD_START_ROUTINE CtrlDispatcher;
243 LPTHREAD_START_ROUTINE PropDispatcher;
244 } CONSOLE_ALLOCCONSOLE, *PCONSOLE_ALLOCCONSOLE;
245
246 typedef struct
247 {
248 DWORD ProcessId; // If ProcessId == ATTACH_PARENT_PROCESS == -1, then attach the current process to its parent process console.
249 HANDLE ConsoleHandle;
250 HANDLE InputHandle;
251 HANDLE OutputHandle;
252 HANDLE ErrorHandle;
253 HANDLE InputWaitHandle;
254 LPTHREAD_START_ROUTINE CtrlDispatcher;
255 LPTHREAD_START_ROUTINE PropDispatcher;
256 } CONSOLE_ATTACHCONSOLE, *PCONSOLE_ATTACHCONSOLE;
257
258 typedef struct
259 {
260 ULONG Dummy;
261 } CONSOLE_FREECONSOLE, *PCONSOLE_FREECONSOLE;
262
263 typedef struct
264 {
265 HANDLE ConsoleHandle;
266 HANDLE OutputHandle;
267 COORD ScreenBufferSize;
268 COORD CursorPosition;
269 COORD ViewOrigin;
270 WORD Attributes;
271 COORD ViewSize;
272 COORD MaximumViewSize;
273 } CONSOLE_GETSCREENBUFFERINFO, *PCONSOLE_GETSCREENBUFFERINFO;
274
275 typedef struct
276 {
277 HANDLE OutputHandle;
278 COORD Position;
279 } CONSOLE_SETCURSORPOSITION, *PCONSOLE_SETCURSORPOSITION;
280
281 typedef struct
282 {
283 HANDLE ConsoleHandle;
284 HANDLE OutputHandle;
285 BOOL Show;
286 INT RefCount;
287 } CONSOLE_SHOWCURSOR, *PCONSOLE_SHOWCURSOR;
288
289 typedef struct
290 {
291 HANDLE ConsoleHandle;
292 HANDLE OutputHandle;
293 HCURSOR CursorHandle;
294 } CONSOLE_SETCURSOR, *PCONSOLE_SETCURSOR;
295
296 typedef struct
297 {
298 HANDLE OutputHandle;
299 CONSOLE_CURSOR_INFO Info;
300 } CONSOLE_GETSETCURSORINFO, *PCONSOLE_GETSETCURSORINFO;
301
302 typedef struct
303 {
304 HANDLE OutputHandle;
305 WORD Attrib;
306 } CONSOLE_SETTEXTATTRIB, *PCONSOLE_SETTEXTATTRIB;
307
308 typedef struct
309 {
310 HANDLE ConsoleHandle; /* A valid input or output console handle */
311 DWORD ConsoleMode;
312 } CONSOLE_GETSETCONSOLEMODE, *PCONSOLE_GETSETCONSOLEMODE;
313
314 typedef struct
315 {
316 HANDLE ConsoleHandle;
317 DWORD DisplayMode; // ModeFlags
318 } CONSOLE_GETDISPLAYMODE, *PCONSOLE_GETDISPLAYMODE;
319
320 typedef struct
321 {
322 HANDLE ConsoleHandle;
323 HANDLE OutputHandle;
324 DWORD DisplayMode; // ModeFlags
325 COORD NewSBDim;
326 HANDLE EventHandle;
327 } CONSOLE_SETDISPLAYMODE, *PCONSOLE_SETDISPLAYMODE;
328
329 /*
330 * Console hardware states.
331 */
332 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
333 #define CONSOLE_HARDWARE_STATE_DIRECT 1
334
335 typedef struct
336 {
337 HANDLE ConsoleHandle;
338 HANDLE OutputHandle;
339 DWORD Flags;
340 DWORD State;
341 } CONSOLE_GETSETHWSTATE, *PCONSOLE_GETSETHWSTATE;
342
343
344 typedef struct
345 {
346 HANDLE OutputHandle; /* Handle to newly created screen buffer */
347 DWORD ScreenBufferType; /* Type of the screen buffer: CONSOLE_TEXTMODE_BUFFER or CONSOLE_GRAPHICS_BUFFER */
348 /*
349 * If we are creating a graphics screen buffer,
350 * this structure holds the initialization information.
351 */
352 CONSOLE_GRAPHICS_BUFFER_INFO GraphicsBufferInfo;
353
354 DWORD Access;
355 DWORD ShareMode;
356 BOOL Inheritable;
357 } CONSOLE_CREATESCREENBUFFER, *PCONSOLE_CREATESCREENBUFFER;
358
359 typedef struct
360 {
361 HANDLE OutputHandle; /* Handle to screen buffer to switch to */
362 } CONSOLE_SETACTIVESCREENBUFFER, *PCONSOLE_SETACTIVESCREENBUFFER;
363
364 typedef struct
365 {
366 HANDLE ConsoleHandle;
367 HANDLE OutputHandle;
368 SMALL_RECT Region;
369 } CONSOLE_INVALIDATEDIBITS, *PCONSOLE_INVALIDATEDIBITS;
370
371 typedef struct
372 {
373 HANDLE ConsoleHandle;
374 HANDLE OutputHandle;
375 HPALETTE PaletteHandle;
376 UINT Usage;
377 } CONSOLE_SETPALETTE, *PCONSOLE_SETPALETTE;
378
379 typedef struct
380 {
381 DWORD Length;
382 PWCHAR Title;
383 } CONSOLE_GETSETCONSOLETITLE, *PCONSOLE_GETSETCONSOLETITLE;
384
385 typedef struct
386 {
387 HANDLE OutputHandle;
388
389 BOOL Unicode;
390 COORD BufferSize;
391 COORD BufferCoord;
392 SMALL_RECT WriteRegion;
393 PCHAR_INFO CharInfo;
394 } CONSOLE_WRITEOUTPUT, *PCONSOLE_WRITEOUTPUT;
395
396 typedef struct
397 {
398 HANDLE InputHandle;
399 } CONSOLE_FLUSHINPUTBUFFER, *PCONSOLE_FLUSHINPUTBUFFER;
400
401 typedef struct
402 {
403 HANDLE OutputHandle;
404
405 BOOL Unicode;
406 SMALL_RECT ScrollRectangle;
407 BOOL UseClipRectangle;
408 SMALL_RECT ClipRectangle;
409 COORD DestinationOrigin;
410 CHAR_INFO Fill;
411 } CONSOLE_SCROLLSCREENBUFFER, *PCONSOLE_SCROLLSCREENBUFFER;
412
413
414 /*
415 * An attribute or a character are instances of the same entity, namely
416 * a "code" (what would be called an (ANSI) escape sequence). Therefore
417 * encode them inside the same structure.
418 */
419 typedef enum _CODE_TYPE
420 {
421 CODE_ASCII = 0x01,
422 CODE_UNICODE = 0x02,
423 CODE_ATTRIBUTE = 0x03
424 } CODE_TYPE;
425
426 typedef struct
427 {
428 HANDLE OutputHandle;
429
430 DWORD NumCodesToRead;
431 COORD ReadCoord;
432 COORD EndCoord;
433
434 DWORD CodesRead;
435
436 CODE_TYPE CodeType;
437 union
438 {
439 PVOID pCode;
440 PCHAR AsciiChar;
441 PWCHAR UnicodeChar;
442 PWORD Attribute;
443 } pCode; // Either a pointer to a character or to an attribute.
444 } CONSOLE_READOUTPUTCODE, *PCONSOLE_READOUTPUTCODE;
445
446 typedef struct
447 {
448 HANDLE OutputHandle;
449
450 ULONG BufferSize; // Seems unusued
451 WORD Length;
452 COORD Coord;
453 COORD EndCoord;
454
455 ULONG NrCharactersWritten; // Seems unusued
456
457 CODE_TYPE CodeType;
458 union
459 {
460 PVOID pCode;
461 PCHAR AsciiChar;
462 PWCHAR UnicodeChar;
463 PWORD Attribute;
464 } pCode; // Either a pointer to a character or to an attribute.
465 } CONSOLE_WRITEOUTPUTCODE, *PCONSOLE_WRITEOUTPUTCODE;
466
467 typedef struct
468 {
469 HANDLE OutputHandle;
470
471 CODE_TYPE CodeType;
472 union
473 {
474 CHAR AsciiChar;
475 WCHAR UnicodeChar;
476 WORD Attribute;
477 } Code; // Either a character or an attribute.
478
479 COORD Coord;
480 ULONG Length;
481
482 ULONG NrCharactersWritten; // FIXME: Only for chars, is it removable ?
483 } CONSOLE_FILLOUTPUTCODE, *PCONSOLE_FILLOUTPUTCODE;
484
485 typedef struct
486 {
487 HANDLE InputHandle;
488 ULONG InputsRead;
489 PINPUT_RECORD InputRecord;
490 ULONG Length;
491 WORD wFlags;
492 BOOLEAN Unicode;
493 } CONSOLE_GETINPUT, *PCONSOLE_GETINPUT;
494
495 typedef struct
496 {
497 HANDLE OutputHandle;
498
499 BOOL Unicode;
500 COORD BufferSize;
501 COORD BufferCoord;
502 SMALL_RECT ReadRegion;
503 PCHAR_INFO CharInfo;
504 } CONSOLE_READOUTPUT, *PCONSOLE_READOUTPUT;
505
506 typedef struct
507 {
508 HANDLE InputHandle;
509 DWORD Length;
510 INPUT_RECORD* InputRecord;
511 BOOL Unicode;
512 BOOL AppendToEnd;
513 } CONSOLE_WRITEINPUT, *PCONSOLE_WRITEINPUT;
514
515 typedef struct
516 {
517 HANDLE ConsoleHandle;
518 HANDLE Handle;
519 } CONSOLE_CLOSEHANDLE, *PCONSOLE_CLOSEHANDLE;
520
521 typedef struct
522 {
523 BOOL IsValid;
524 HANDLE ConsoleHandle;
525 HANDLE Handle;
526 } CONSOLE_VERIFYHANDLE, *PCONSOLE_VERIFYHANDLE;
527
528 typedef struct
529 {
530 HANDLE ConsoleHandle;
531 DWORD Access;
532 BOOL Inheritable;
533 DWORD Options;
534 } CONSOLE_DUPLICATEHANDLE, *PCONSOLE_DUPLICATEHANDLE;
535
536 /*
537 * Type of handles.
538 */
539 typedef enum _CONSOLE_HANDLE_TYPE
540 {
541 HANDLE_INPUT = 0x01,
542 HANDLE_OUTPUT = 0x02
543 } CONSOLE_HANDLE_TYPE;
544
545 typedef struct
546 {
547 HANDLE ConsoleHandle;
548 CONSOLE_HANDLE_TYPE HandleType;
549 DWORD Access;
550 BOOL Inheritable;
551 DWORD ShareMode;
552 } CONSOLE_OPENCONSOLE, *PCONSOLE_OPENCONSOLE;
553
554
555 typedef struct
556 {
557 HANDLE OutputHandle;
558 COORD Size;
559 } CONSOLE_GETLARGESTWINDOWSIZE, *PCONSOLE_GETLARGESTWINDOWSIZE;
560
561 typedef struct
562 {
563 HANDLE ConsoleHandle;
564 HANDLE OutputHandle;
565 DWORD CmdIdLow;
566 DWORD CmdIdHigh;
567 HMENU MenuHandle;
568 } CONSOLE_MENUCONTROL, *PCONSOLE_MENUCONTROL;
569
570 typedef struct
571 {
572 HANDLE ConsoleHandle;
573 BOOL Enable;
574 } CONSOLE_SETMENUCLOSE, *PCONSOLE_SETMENUCLOSE;
575
576 typedef struct
577 {
578 HANDLE OutputHandle;
579 BOOL Absolute;
580 SMALL_RECT WindowRect; // New console window position in the screen-buffer frame (Absolute == TRUE)
581 // or in the old window position frame (Absolute == FALSE).
582 } CONSOLE_SETWINDOWINFO, *PCONSOLE_SETWINDOWINFO;
583
584 typedef struct
585 {
586 HANDLE ConsoleHandle;
587 HWND WindowHandle;
588 } CONSOLE_GETWINDOW, *PCONSOLE_GETWINDOW;
589
590 typedef struct
591 {
592 HANDLE ConsoleHandle;
593 HICON IconHandle;
594 } CONSOLE_SETICON, *PCONSOLE_SETICON;
595
596
597
598 typedef struct
599 {
600 ULONG SourceLength;
601 ULONG TargetLength; // Also used for storing the number of bytes written.
602 ULONG ExeLength;
603 LPWSTR Source;
604 LPWSTR Target;
605 LPWSTR Exe;
606 } CONSOLE_ADDGETALIAS, *PCONSOLE_ADDGETALIAS;
607
608 typedef struct
609 {
610 DWORD ExeLength;
611 DWORD AliasesBufferLength;
612 LPWSTR ExeName;
613 LPWSTR AliasesBuffer;
614 } CONSOLE_GETALLALIASES, *PCONSOLE_GETALLALIASES;
615
616 typedef struct
617 {
618 DWORD Length;
619 DWORD ExeLength;
620 LPWSTR ExeName;
621 } CONSOLE_GETALLALIASESLENGTH, *PCONSOLE_GETALLALIASESLENGTH;
622
623 typedef struct
624 {
625 DWORD Length;
626 LPWSTR ExeNames;
627 } CONSOLE_GETALIASESEXES, *PCONSOLE_GETALIASESEXES;
628
629 typedef struct
630 {
631 DWORD Length;
632 } CONSOLE_GETALIASESEXESLENGTH, *PCONSOLE_GETALIASESEXESLENGTH;
633
634
635
636 typedef struct
637 {
638 UNICODE_STRING ExeName;
639 PWCHAR History;
640 DWORD Length;
641 } CONSOLE_GETCOMMANDHISTORY, *PCONSOLE_GETCOMMANDHISTORY;
642
643 typedef struct
644 {
645 UNICODE_STRING ExeName;
646 DWORD Length;
647 } CONSOLE_GETCOMMANDHISTORYLENGTH, *PCONSOLE_GETCOMMANDHISTORYLENGTH;
648
649 typedef struct
650 {
651 UNICODE_STRING ExeName;
652 } CONSOLE_EXPUNGECOMMANDHISTORY, *PCONSOLE_EXPUNGECOMMANDHISTORY;
653
654 typedef struct
655 {
656 UNICODE_STRING ExeName;
657 DWORD NumCommands;
658 } CONSOLE_SETHISTORYNUMBERCOMMANDS, *PCONSOLE_SETHISTORYNUMBERCOMMANDS;
659
660 typedef struct
661 {
662 UINT HistoryBufferSize;
663 UINT NumberOfHistoryBuffers;
664 DWORD dwFlags;
665 } CONSOLE_GETSETHISTORYINFO, *PCONSOLE_GETSETHISTORYINFO;
666
667
668
669 typedef struct
670 {
671 DWORD Event;
672 DWORD ProcessGroup;
673 } CONSOLE_GENERATECTRLEVENT, *PCONSOLE_GENERATECTRLEVENT;
674
675 typedef struct
676 {
677 HANDLE InputHandle;
678 DWORD NumInputEvents;
679 } CONSOLE_GETNUMINPUTEVENTS, *PCONSOLE_GETNUMINPUTEVENTS;
680
681 typedef struct
682 {
683 HANDLE OutputHandle;
684 COORD Size;
685 } CONSOLE_SETSCREENBUFFERSIZE, *PCONSOLE_SETSCREENBUFFERSIZE;
686
687 typedef struct
688 {
689 HANDLE ConsoleHandle;
690 CONSOLE_SELECTION_INFO Info;
691 } CONSOLE_GETSELECTIONINFO, *PCONSOLE_GETSELECTIONINFO;
692
693 typedef struct
694 {
695 HANDLE ConsoleHandle;
696 UINT CodePage;
697 BOOL OutputCP; // TRUE : Output Code Page ; FALSE : Input Code Page
698 } CONSOLE_GETINPUTOUTPUTCP, *PCONSOLE_GETINPUTOUTPUTCP;
699
700 typedef struct
701 {
702 HANDLE ConsoleHandle;
703 UINT CodePage;
704 BOOL OutputCP; // TRUE : Output Code Page ; FALSE : Input Code Page
705 HANDLE EventHandle;
706 } CONSOLE_SETINPUTOUTPUTCP, *PCONSOLE_SETINPUTOUTPUTCP;
707
708 typedef struct _CONSOLE_API_MESSAGE
709 {
710 PORT_MESSAGE Header;
711
712 PCSR_CAPTURE_BUFFER CsrCaptureData;
713 CSR_API_NUMBER ApiNumber;
714 NTSTATUS Status;
715 ULONG Reserved;
716 union
717 {
718 /* Console initialization and uninitialization */
719 CONSOLE_ALLOCCONSOLE AllocConsoleRequest;
720 CONSOLE_ATTACHCONSOLE AttachConsoleRequest;
721 CONSOLE_FREECONSOLE FreeConsoleRequest;
722
723 /* Process list */
724 CONSOLE_GETPROCESSLIST GetProcessListRequest;
725
726 /* Handles */
727 CONSOLE_OPENCONSOLE OpenConsoleRequest;
728 CONSOLE_CLOSEHANDLE CloseHandleRequest;
729 CONSOLE_VERIFYHANDLE VerifyHandleRequest;
730 CONSOLE_DUPLICATEHANDLE DuplicateHandleRequest;
731
732 /* Cursor */
733 CONSOLE_SHOWCURSOR ShowCursorRequest;
734 CONSOLE_SETCURSOR SetCursorRequest;
735 CONSOLE_GETSETCURSORINFO CursorInfoRequest;
736 CONSOLE_SETCURSORPOSITION SetCursorPositionRequest;
737
738 /* Screen-buffer */
739 CONSOLE_CREATESCREENBUFFER CreateScreenBufferRequest;
740 CONSOLE_SETACTIVESCREENBUFFER SetScreenBufferRequest;
741 CONSOLE_GETSCREENBUFFERINFO ScreenBufferInfoRequest;
742 CONSOLE_SETSCREENBUFFERSIZE SetScreenBufferSizeRequest;
743 CONSOLE_SCROLLSCREENBUFFER ScrollScreenBufferRequest;
744
745 CONSOLE_GETSELECTIONINFO GetSelectionInfoRequest;
746 CONSOLE_FLUSHINPUTBUFFER FlushInputBufferRequest;
747
748 /* Console mode */
749 CONSOLE_GETSETCONSOLEMODE ConsoleModeRequest;
750 CONSOLE_GETDISPLAYMODE GetDisplayModeRequest;
751 CONSOLE_SETDISPLAYMODE SetDisplayModeRequest;
752 CONSOLE_GETSETHWSTATE HardwareStateRequest;
753
754 /* Console window */
755 CONSOLE_INVALIDATEDIBITS InvalidateDIBitsRequest;
756 CONSOLE_SETPALETTE SetPaletteRequest;
757 CONSOLE_GETSETCONSOLETITLE TitleRequest;
758 CONSOLE_GETLARGESTWINDOWSIZE GetLargestWindowSizeRequest;
759 CONSOLE_MENUCONTROL MenuControlRequest;
760 CONSOLE_SETMENUCLOSE SetMenuCloseRequest;
761 CONSOLE_SETWINDOWINFO SetWindowInfoRequest;
762 CONSOLE_GETWINDOW GetWindowRequest;
763 CONSOLE_SETICON SetIconRequest;
764
765 /* Read */
766 CONSOLE_READCONSOLE ReadConsoleRequest; // SrvReadConsole / ReadConsole
767 CONSOLE_GETINPUT GetInputRequest; // SrvGetConsoleInput / PeekConsoleInput & ReadConsoleInput
768 CONSOLE_READOUTPUT ReadOutputRequest; // SrvReadConsoleOutput / ReadConsoleOutput
769 CONSOLE_READOUTPUTCODE ReadOutputCodeRequest; // SrvReadConsoleOutputString / ReadConsoleOutputAttribute & ReadConsoleOutputCharacter
770
771 /* Write */
772 CONSOLE_WRITECONSOLE WriteConsoleRequest; // SrvWriteConsole / WriteConsole
773 CONSOLE_WRITEINPUT WriteInputRequest;
774 CONSOLE_WRITEOUTPUT WriteOutputRequest;
775 CONSOLE_WRITEOUTPUTCODE WriteOutputCodeRequest;
776
777 CONSOLE_FILLOUTPUTCODE FillOutputRequest;
778 CONSOLE_SETTEXTATTRIB SetTextAttribRequest;
779
780 /* Aliases */
781 CONSOLE_ADDGETALIAS ConsoleAliasRequest;
782 CONSOLE_GETALLALIASES GetAllAliasesRequest;
783 CONSOLE_GETALLALIASESLENGTH GetAllAliasesLengthRequest;
784 CONSOLE_GETALIASESEXES GetAliasesExesRequest;
785 CONSOLE_GETALIASESEXESLENGTH GetAliasesExesLengthRequest;
786
787 /* History */
788 CONSOLE_GETCOMMANDHISTORY GetCommandHistoryRequest;
789 CONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest;
790 CONSOLE_EXPUNGECOMMANDHISTORY ExpungeCommandHistoryRequest;
791 CONSOLE_SETHISTORYNUMBERCOMMANDS SetHistoryNumberCommandsRequest;
792 CONSOLE_GETSETHISTORYINFO HistoryInfoRequest;
793
794 CONSOLE_GENERATECTRLEVENT GenerateCtrlEventRequest;
795 CONSOLE_GETNUMINPUTEVENTS GetNumInputEventsRequest;
796
797 /* Input and Output Code Pages */
798 CONSOLE_GETINPUTOUTPUTCP GetConsoleCPRequest;
799 CONSOLE_SETINPUTOUTPUTCP SetConsoleCPRequest;
800 } Data;
801 } CONSOLE_API_MESSAGE, *PCONSOLE_API_MESSAGE;
802
803 // Check that a CONSOLE_API_MESSAGE can hold in a CSR_API_MESSAGE.
804 CHECK_API_MSG_SIZE(CONSOLE_API_MESSAGE);
805
806 #endif // _CONMSG_H
807
808 /* EOF */