a11d0bf64b84ff23e687d44d4de60e43b4d27be6
[reactos.git] / 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
168 BOOLEAN ConsoleNeeded; // Used for GUI apps only.
169 LPTHREAD_START_ROUTINE CtrlDispatcher;
170 LPTHREAD_START_ROUTINE ImeDispatcher;
171 LPTHREAD_START_ROUTINE PropDispatcher;
172 ULONG TitleLength;
173 WCHAR ConsoleTitle[MAX_PATH + 1]; // Console title or full path to the startup shortcut
174 ULONG DesktopLength;
175 PWCHAR DesktopPath;
176 ULONG AppNameLength;
177 WCHAR AppPath[128]; // Full path of the launched app
178 ULONG IconPathLength;
179 WCHAR IconPath[MAX_PATH + 1]; // Path to the file containing the icon
180 } CONSOLE_START_INFO, *PCONSOLE_START_INFO;
181
182 typedef struct _CONSRV_API_CONNECTINFO
183 {
184 HANDLE ConsoleHandle;
185 HANDLE InputWaitHandle;
186 HANDLE InputHandle;
187 HANDLE OutputHandle;
188 HANDLE ErrorHandle;
189 HANDLE Event1;
190 HANDLE Event2;
191 /* Adapted from CONSOLE_ALLOCCONSOLE */
192 CONSOLE_START_INFO ConsoleStartInfo;
193 } CONSRV_API_CONNECTINFO, *PCONSRV_API_CONNECTINFO;
194
195 #if defined(_M_IX86)
196 C_ASSERT(sizeof(CONSRV_API_CONNECTINFO) == 0x638);
197 #endif
198
199 typedef struct
200 {
201 HANDLE ConsoleHandle;
202 ULONG ProcessCount;
203 PDWORD ProcessIdsList;
204 } CONSOLE_GETPROCESSLIST, *PCONSOLE_GETPROCESSLIST;
205
206 typedef struct
207 {
208 HANDLE ConsoleHandle;
209 DWORD CtrlEvent;
210 DWORD ProcessGroupId;
211 } CONSOLE_GENERATECTRLEVENT, *PCONSOLE_GENERATECTRLEVENT;
212
213 typedef struct
214 {
215 HANDLE ConsoleHandle;
216 } CONSOLE_NOTIFYLASTCLOSE, *PCONSOLE_NOTIFYLASTCLOSE;
217
218
219
220 typedef struct
221 {
222 HANDLE ConsoleHandle;
223 HANDLE OutputHandle;
224
225 CHAR StaticBuffer[80];
226 PVOID Buffer; // BufPtr
227 ULONG NumBytes;
228
229 // On Windows, the client never uses this member
230 ULONG Reserved1;
231
232 BOOLEAN UsingStaticBuffer;
233 BOOLEAN Unicode;
234
235 // On Windows, the client never uses this member
236 CHAR Reserved2[6];
237 } CONSOLE_WRITECONSOLE, *PCONSOLE_WRITECONSOLE;
238
239 typedef struct
240 {
241 HANDLE ConsoleHandle;
242 HANDLE InputHandle;
243
244 USHORT ExeLength;
245
246 CHAR StaticBuffer[80];
247 PVOID Buffer; // BufPtr
248 ULONG NumBytes;
249
250 ULONG CaptureBufferSize;
251
252 ULONG InitialNumBytes;
253 ULONG CtrlWakeupMask;
254 ULONG ControlKeyState;
255 BOOLEAN Unicode;
256 } CONSOLE_READCONSOLE, *PCONSOLE_READCONSOLE;
257
258 typedef struct
259 {
260 PCONSOLE_START_INFO ConsoleStartInfo;
261
262 HANDLE ConsoleHandle;
263 HANDLE InputHandle;
264 HANDLE OutputHandle;
265 HANDLE ErrorHandle;
266 HANDLE InputWaitHandle;
267 LPTHREAD_START_ROUTINE CtrlDispatcher;
268 LPTHREAD_START_ROUTINE PropDispatcher;
269 } CONSOLE_ALLOCCONSOLE, *PCONSOLE_ALLOCCONSOLE;
270
271 typedef struct
272 {
273 DWORD ProcessId; // If ProcessId == ATTACH_PARENT_PROCESS == -1, then attach the current process to its parent process console.
274 HANDLE ConsoleHandle;
275 HANDLE InputHandle;
276 HANDLE OutputHandle;
277 HANDLE ErrorHandle;
278 HANDLE InputWaitHandle;
279 LPTHREAD_START_ROUTINE CtrlDispatcher;
280 LPTHREAD_START_ROUTINE PropDispatcher;
281 } CONSOLE_ATTACHCONSOLE, *PCONSOLE_ATTACHCONSOLE;
282
283 typedef struct
284 {
285 HANDLE ConsoleHandle;
286 } CONSOLE_FREECONSOLE, *PCONSOLE_FREECONSOLE;
287
288 typedef struct
289 {
290 HANDLE ConsoleHandle;
291 HANDLE OutputHandle;
292 COORD ScreenBufferSize;
293 COORD CursorPosition;
294 COORD ViewOrigin;
295 WORD Attributes;
296 COORD ViewSize;
297 COORD MaximumViewSize;
298 } CONSOLE_GETSCREENBUFFERINFO, *PCONSOLE_GETSCREENBUFFERINFO;
299
300 typedef struct
301 {
302 HANDLE ConsoleHandle;
303 HANDLE OutputHandle;
304 COORD Position;
305 } CONSOLE_SETCURSORPOSITION, *PCONSOLE_SETCURSORPOSITION;
306
307 typedef struct
308 {
309 HANDLE ConsoleHandle;
310 HANDLE OutputHandle;
311 BOOL Show;
312 INT RefCount;
313 } CONSOLE_SHOWCURSOR, *PCONSOLE_SHOWCURSOR;
314
315 typedef struct
316 {
317 HANDLE ConsoleHandle;
318 HANDLE OutputHandle;
319 HCURSOR CursorHandle;
320 } CONSOLE_SETCURSOR, *PCONSOLE_SETCURSOR;
321
322 typedef struct
323 {
324 HANDLE ConsoleHandle;
325 HANDLE OutputHandle;
326 CONSOLE_CURSOR_INFO Info;
327 /*
328 DWORD Size;
329 BOOLEAN Visible;
330 */
331 } CONSOLE_GETSETCURSORINFO, *PCONSOLE_GETSETCURSORINFO;
332
333 typedef struct
334 {
335 HANDLE ConsoleHandle;
336 ULONG NumButtons;
337 } CONSOLE_GETMOUSEINFO, *PCONSOLE_GETMOUSEINFO;
338
339 typedef struct
340 {
341 HANDLE ConsoleHandle;
342 HANDLE OutputHandle;
343 WORD Attributes;
344 } CONSOLE_SETTEXTATTRIB, *PCONSOLE_SETTEXTATTRIB;
345
346 typedef struct
347 {
348 HANDLE ConsoleHandle;
349 HANDLE Handle;
350 DWORD Mode;
351 } CONSOLE_GETSETCONSOLEMODE, *PCONSOLE_GETSETCONSOLEMODE;
352
353 typedef struct
354 {
355 HANDLE ConsoleHandle;
356 DWORD DisplayMode; // ModeFlags
357 } CONSOLE_GETDISPLAYMODE, *PCONSOLE_GETDISPLAYMODE;
358
359 typedef struct
360 {
361 HANDLE ConsoleHandle;
362 HANDLE OutputHandle;
363 DWORD DisplayMode; // ModeFlags
364 COORD NewSBDim;
365 HANDLE EventHandle;
366 } CONSOLE_SETDISPLAYMODE, *PCONSOLE_SETDISPLAYMODE;
367
368 /*
369 * Console hardware states.
370 */
371 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
372 #define CONSOLE_HARDWARE_STATE_DIRECT 1
373
374 typedef struct
375 {
376 HANDLE ConsoleHandle;
377 HANDLE OutputHandle;
378 DWORD Flags;
379 DWORD State;
380 } CONSOLE_GETSETHWSTATE, *PCONSOLE_GETSETHWSTATE;
381
382
383
384 typedef struct
385 {
386 HANDLE ConsoleHandle;
387 DWORD DesiredAccess;
388 BOOL InheritHandle;
389 DWORD ShareMode;
390 /* Type of the screen buffer: CONSOLE_TEXTMODE_BUFFER or CONSOLE_GRAPHICS_BUFFER */
391 DWORD ScreenBufferType;
392 /*
393 * This structure holds the initialization information
394 * for graphics screen buffers.
395 */
396 CONSOLE_GRAPHICS_BUFFER_INFO GraphicsBufferInfo;
397 HANDLE hMutex;
398 PVOID lpBitMap;
399 HANDLE OutputHandle; /* Handle to newly created screen buffer */
400 } CONSOLE_CREATESCREENBUFFER, *PCONSOLE_CREATESCREENBUFFER;
401
402 typedef struct
403 {
404 HANDLE ConsoleHandle;
405 HANDLE OutputHandle; /* Handle to screen buffer to switch to */
406 } CONSOLE_SETACTIVESCREENBUFFER, *PCONSOLE_SETACTIVESCREENBUFFER;
407
408 typedef struct
409 {
410 HANDLE ConsoleHandle;
411 HANDLE OutputHandle;
412 SMALL_RECT Region;
413 } CONSOLE_INVALIDATEDIBITS, *PCONSOLE_INVALIDATEDIBITS;
414
415 typedef struct
416 {
417 HANDLE ConsoleHandle;
418 HANDLE OutputHandle;
419 HPALETTE PaletteHandle;
420 UINT Usage;
421 } CONSOLE_SETPALETTE, *PCONSOLE_SETPALETTE;
422
423 typedef struct
424 {
425 HANDLE ConsoleHandle;
426 ULONG Length;
427 PVOID Title;
428 BOOLEAN Unicode;
429 } CONSOLE_GETSETCONSOLETITLE, *PCONSOLE_GETSETCONSOLETITLE;
430
431 typedef struct
432 {
433 HANDLE ConsoleHandle;
434 HANDLE InputHandle;
435 } CONSOLE_FLUSHINPUTBUFFER, *PCONSOLE_FLUSHINPUTBUFFER;
436
437 typedef struct
438 {
439 HANDLE ConsoleHandle;
440 HANDLE OutputHandle;
441 SMALL_RECT ScrollRectangle;
442 SMALL_RECT ClipRectangle;
443 BOOL UseClipRectangle;
444 COORD DestinationOrigin;
445 CHAR_INFO Fill;
446 BOOLEAN Unicode;
447 } CONSOLE_SCROLLSCREENBUFFER, *PCONSOLE_SCROLLSCREENBUFFER;
448
449
450 /*
451 * An attribute or a character are instances of the same entity, namely
452 * a "code" (what would be called an (ANSI) escape sequence). Therefore
453 * encode them inside the same structure.
454 */
455 typedef enum _CODE_TYPE
456 {
457 CODE_ASCII = 0x01,
458 CODE_UNICODE = 0x02,
459 CODE_ATTRIBUTE = 0x03
460 } CODE_TYPE;
461
462 typedef union _CODE_ELEMENT
463 {
464 CHAR AsciiChar;
465 WCHAR UnicodeChar;
466 WORD Attribute;
467 } CODE_ELEMENT;
468
469 typedef struct
470 {
471 HANDLE ConsoleHandle;
472 HANDLE OutputHandle;
473 COORD Coord;
474
475 CODE_TYPE CodeType;
476 CHAR CodeStaticBuffer[80]; // == 40 * sizeof(CODE_ELEMENT)
477 PVOID pCode; // Either a pointer to a character or to an attribute.
478 // union
479 // {
480 // PVOID pCode;
481 // PCHAR AsciiChar;
482 // PWCHAR UnicodeChar;
483 // PWORD Attribute;
484 // } pCode; // Either a pointer to a character or to an attribute.
485
486 ULONG NumCodes;
487 } CONSOLE_READOUTPUTCODE , *PCONSOLE_READOUTPUTCODE,
488 CONSOLE_WRITEOUTPUTCODE, *PCONSOLE_WRITEOUTPUTCODE;
489
490 typedef struct
491 {
492 HANDLE ConsoleHandle;
493 HANDLE OutputHandle;
494 COORD WriteCoord;
495
496 CODE_TYPE CodeType;
497 CODE_ELEMENT Code; // Either a character or an attribute.
498
499 ULONG NumCodes;
500 } CONSOLE_FILLOUTPUTCODE, *PCONSOLE_FILLOUTPUTCODE;
501
502 typedef struct
503 {
504 HANDLE ConsoleHandle;
505 HANDLE InputHandle;
506 INPUT_RECORD RecordStaticBuffer[5];
507 PINPUT_RECORD RecordBufPtr;
508 ULONG NumRecords;
509 WORD Flags;
510 BOOLEAN Unicode;
511 } CONSOLE_GETINPUT, *PCONSOLE_GETINPUT;
512
513 typedef struct
514 {
515 HANDLE ConsoleHandle;
516 HANDLE InputHandle;
517 INPUT_RECORD RecordStaticBuffer[5];
518 PINPUT_RECORD RecordBufPtr;
519 ULONG NumRecords;
520 BOOLEAN Unicode;
521 BOOLEAN AppendToEnd;
522 } CONSOLE_WRITEINPUT, *PCONSOLE_WRITEINPUT;
523
524 typedef struct
525 {
526 HANDLE ConsoleHandle;
527 HANDLE OutputHandle;
528
529 CHAR_INFO StaticBuffer;
530 PCHAR_INFO CharInfo;
531
532 SMALL_RECT ReadRegion;
533 BOOLEAN Unicode;
534 } CONSOLE_READOUTPUT, *PCONSOLE_READOUTPUT;
535
536 typedef struct
537 {
538 HANDLE ConsoleHandle;
539 HANDLE OutputHandle;
540
541 CHAR_INFO StaticBuffer;
542 PCHAR_INFO CharInfo;
543
544 SMALL_RECT WriteRegion;
545 BOOLEAN Unicode;
546
547 ULONG Unknown;
548 } CONSOLE_WRITEOUTPUT, *PCONSOLE_WRITEOUTPUT;
549
550 typedef struct
551 {
552 HANDLE ConsoleHandle;
553 HANDLE InputHandle;
554 ULONG NumberOfEvents;
555 } CONSOLE_GETNUMINPUTEVENTS, *PCONSOLE_GETNUMINPUTEVENTS;
556
557
558
559 typedef struct
560 {
561 HANDLE ConsoleHandle;
562 HANDLE Handle;
563 } CONSOLE_CLOSEHANDLE, *PCONSOLE_CLOSEHANDLE;
564
565 typedef struct
566 {
567 BOOL IsValid;
568 HANDLE ConsoleHandle;
569 HANDLE Handle;
570 } CONSOLE_VERIFYHANDLE, *PCONSOLE_VERIFYHANDLE;
571
572 typedef struct
573 {
574 HANDLE ConsoleHandle;
575 HANDLE SourceHandle;
576 DWORD DesiredAccess;
577 BOOLEAN InheritHandle;
578 DWORD Options;
579 HANDLE TargetHandle;
580 } CONSOLE_DUPLICATEHANDLE, *PCONSOLE_DUPLICATEHANDLE;
581
582 typedef struct
583 {
584 HANDLE ConsoleHandle;
585 HANDLE Handle;
586 DWORD Flags;
587 } CONSOLE_GETHANDLEINFO, *PCONSOLE_GETHANDLEINFO;
588
589 typedef struct
590 {
591 HANDLE ConsoleHandle;
592 HANDLE Handle;
593 DWORD Mask;
594 DWORD Flags;
595 } CONSOLE_SETHANDLEINFO, *PCONSOLE_SETHANDLEINFO;
596
597 /*
598 * Type of handles.
599 */
600 typedef enum _CONSOLE_HANDLE_TYPE
601 {
602 HANDLE_INPUT = 0x01,
603 HANDLE_OUTPUT = 0x02
604 } CONSOLE_HANDLE_TYPE;
605
606 typedef struct
607 {
608 HANDLE ConsoleHandle;
609 CONSOLE_HANDLE_TYPE HandleType;
610 DWORD DesiredAccess;
611 BOOL InheritHandle;
612 DWORD ShareMode;
613 HANDLE Handle;
614 } CONSOLE_OPENCONSOLE, *PCONSOLE_OPENCONSOLE;
615
616
617
618 typedef struct
619 {
620 HANDLE ConsoleHandle;
621 HANDLE OutputHandle;
622 COORD Size;
623 } CONSOLE_GETLARGESTWINDOWSIZE, *PCONSOLE_GETLARGESTWINDOWSIZE;
624
625 typedef struct
626 {
627 HANDLE ConsoleHandle;
628 HANDLE OutputHandle;
629 DWORD CmdIdLow;
630 DWORD CmdIdHigh;
631 HMENU MenuHandle;
632 } CONSOLE_MENUCONTROL, *PCONSOLE_MENUCONTROL;
633
634 typedef struct
635 {
636 HANDLE ConsoleHandle;
637 BOOL Enable;
638 } CONSOLE_SETMENUCLOSE, *PCONSOLE_SETMENUCLOSE;
639
640 typedef struct
641 {
642 HANDLE ConsoleHandle;
643 HANDLE OutputHandle;
644 BOOL Absolute;
645 SMALL_RECT WindowRect; // New console window position in the screen-buffer frame (Absolute == TRUE)
646 // or in the old window position frame (Absolute == FALSE).
647 } CONSOLE_SETWINDOWINFO, *PCONSOLE_SETWINDOWINFO;
648
649 typedef struct
650 {
651 HANDLE ConsoleHandle;
652 HWND WindowHandle;
653 } CONSOLE_GETWINDOW, *PCONSOLE_GETWINDOW;
654
655 typedef struct
656 {
657 HANDLE ConsoleHandle;
658 HICON IconHandle;
659 } CONSOLE_SETICON, *PCONSOLE_SETICON;
660
661
662
663 typedef struct
664 {
665 HANDLE ConsoleHandle;
666 USHORT SourceLength;
667 USHORT TargetLength; // Also used for storing the number of bytes written.
668 USHORT ExeLength;
669 PVOID Source;
670 PVOID Target;
671 PVOID ExeName;
672 BOOLEAN Unicode;
673 BOOLEAN Unicode2;
674 } CONSOLE_ADDGETALIAS, *PCONSOLE_ADDGETALIAS;
675
676 typedef struct
677 {
678 HANDLE ConsoleHandle;
679 USHORT ExeLength;
680 PVOID ExeName;
681 BOOLEAN Unicode;
682 BOOLEAN Unicode2;
683 ULONG AliasesBufferLength;
684 PVOID AliasesBuffer;
685 } CONSOLE_GETALLALIASES, *PCONSOLE_GETALLALIASES;
686
687 typedef struct
688 {
689 HANDLE ConsoleHandle;
690 USHORT ExeLength;
691 PVOID ExeName;
692 ULONG Length;
693 BOOLEAN Unicode;
694 BOOLEAN Unicode2;
695 } CONSOLE_GETALLALIASESLENGTH, *PCONSOLE_GETALLALIASESLENGTH;
696
697 typedef struct
698 {
699 HANDLE ConsoleHandle;
700 ULONG Length ; // ExeLength; // ExesLength
701 PVOID ExeNames;
702 BOOLEAN Unicode;
703 } CONSOLE_GETALIASESEXES, *PCONSOLE_GETALIASESEXES;
704
705 typedef struct
706 {
707 HANDLE ConsoleHandle;
708 ULONG Length;
709 BOOLEAN Unicode;
710 } CONSOLE_GETALIASESEXESLENGTH, *PCONSOLE_GETALIASESEXESLENGTH;
711
712
713
714 typedef struct
715 {
716 HANDLE ConsoleHandle;
717 ULONG HistoryLength;
718 PVOID History;
719 USHORT ExeLength;
720 PVOID ExeName;
721 BOOLEAN Unicode;
722 BOOLEAN Unicode2;
723 } CONSOLE_GETCOMMANDHISTORY, *PCONSOLE_GETCOMMANDHISTORY;
724
725 typedef struct
726 {
727 HANDLE ConsoleHandle;
728 ULONG HistoryLength;
729 USHORT ExeLength;
730 PVOID ExeName;
731 BOOLEAN Unicode;
732 BOOLEAN Unicode2;
733 } CONSOLE_GETCOMMANDHISTORYLENGTH, *PCONSOLE_GETCOMMANDHISTORYLENGTH;
734
735 typedef struct
736 {
737 HANDLE ConsoleHandle;
738 USHORT ExeLength;
739 PVOID ExeName;
740 BOOLEAN Unicode;
741 BOOLEAN Unicode2;
742 } CONSOLE_EXPUNGECOMMANDHISTORY, *PCONSOLE_EXPUNGECOMMANDHISTORY;
743
744 typedef struct
745 {
746 UINT HistoryBufferSize;
747 UINT NumberOfHistoryBuffers;
748 DWORD dwFlags;
749 } CONSOLE_GETSETHISTORYINFO, *PCONSOLE_GETSETHISTORYINFO;
750
751 typedef struct
752 {
753 HANDLE ConsoleHandle;
754 ULONG NumCommands;
755 USHORT ExeLength;
756 PVOID ExeName;
757 BOOLEAN Unicode;
758 BOOLEAN Unicode2;
759 } CONSOLE_SETHISTORYNUMBERCOMMANDS, *PCONSOLE_SETHISTORYNUMBERCOMMANDS;
760
761 typedef struct
762 {
763 HANDLE ConsoleHandle;
764 ULONG Mode;
765 } CONSOLE_SETHISTORYMODE, *PCONSOLE_SETHISTORYMODE;
766
767
768
769 typedef struct
770 {
771 HANDLE ConsoleHandle;
772 HANDLE OutputHandle;
773 COORD Size;
774 } CONSOLE_SETSCREENBUFFERSIZE, *PCONSOLE_SETSCREENBUFFERSIZE;
775
776 typedef struct
777 {
778 HANDLE ConsoleHandle;
779 CONSOLE_SELECTION_INFO Info;
780 } CONSOLE_GETSELECTIONINFO, *PCONSOLE_GETSELECTIONINFO;
781
782 typedef struct
783 {
784 HANDLE ConsoleHandle;
785 UINT CodePage;
786 BOOL OutputCP; // TRUE : Output Code Page ; FALSE : Input Code Page
787 } CONSOLE_GETINPUTOUTPUTCP, *PCONSOLE_GETINPUTOUTPUTCP;
788
789 typedef struct
790 {
791 HANDLE ConsoleHandle;
792 UINT CodePage;
793 BOOL OutputCP; // TRUE : Output Code Page ; FALSE : Input Code Page
794 HANDLE EventHandle;
795 } CONSOLE_SETINPUTOUTPUTCP, *PCONSOLE_SETINPUTOUTPUTCP;
796
797 typedef struct
798 {
799 HANDLE ConsoleHandle;
800 CHAR LayoutBuffer[KL_NAMELENGTH * sizeof(WCHAR)]; // Can hold up to 9 wchars
801 BOOL Ansi;
802 } CONSOLE_GETKBDLAYOUTNAME, *PCONSOLE_GETKBDLAYOUTNAME;
803
804 typedef struct _CONSOLE_API_MESSAGE
805 {
806 PORT_MESSAGE Header;
807
808 PCSR_CAPTURE_BUFFER CsrCaptureData;
809 CSR_API_NUMBER ApiNumber;
810 NTSTATUS Status;
811 ULONG Reserved;
812 union
813 {
814 /* Console initialization and uninitialization */
815 CONSOLE_ALLOCCONSOLE AllocConsoleRequest;
816 CONSOLE_ATTACHCONSOLE AttachConsoleRequest;
817 CONSOLE_FREECONSOLE FreeConsoleRequest;
818
819 /* Processes */
820 CONSOLE_GETPROCESSLIST GetProcessListRequest;
821 CONSOLE_GENERATECTRLEVENT GenerateCtrlEventRequest;
822 CONSOLE_NOTIFYLASTCLOSE NotifyLastCloseRequest;
823
824 /* Handles */
825 CONSOLE_OPENCONSOLE OpenConsoleRequest;
826 CONSOLE_CLOSEHANDLE CloseHandleRequest;
827 CONSOLE_VERIFYHANDLE VerifyHandleRequest;
828 CONSOLE_DUPLICATEHANDLE DuplicateHandleRequest;
829 CONSOLE_GETHANDLEINFO GetHandleInfoRequest;
830 CONSOLE_SETHANDLEINFO SetHandleInfoRequest;
831
832 /* Cursor & Mouse */
833 CONSOLE_SHOWCURSOR ShowCursorRequest;
834 CONSOLE_SETCURSOR SetCursorRequest;
835 CONSOLE_GETSETCURSORINFO CursorInfoRequest;
836 CONSOLE_SETCURSORPOSITION SetCursorPositionRequest;
837 CONSOLE_GETMOUSEINFO GetMouseInfoRequest;
838
839 /* Screen-buffer */
840 CONSOLE_CREATESCREENBUFFER CreateScreenBufferRequest;
841 CONSOLE_SETACTIVESCREENBUFFER SetScreenBufferRequest;
842 CONSOLE_GETSCREENBUFFERINFO ScreenBufferInfoRequest;
843 CONSOLE_SETSCREENBUFFERSIZE SetScreenBufferSizeRequest;
844 CONSOLE_SCROLLSCREENBUFFER ScrollScreenBufferRequest;
845
846 CONSOLE_GETSELECTIONINFO GetSelectionInfoRequest;
847 CONSOLE_FLUSHINPUTBUFFER FlushInputBufferRequest;
848
849 /* Console mode */
850 CONSOLE_GETSETCONSOLEMODE ConsoleModeRequest;
851 CONSOLE_GETDISPLAYMODE GetDisplayModeRequest;
852 CONSOLE_SETDISPLAYMODE SetDisplayModeRequest;
853 CONSOLE_GETSETHWSTATE HardwareStateRequest;
854
855 /* Console window */
856 CONSOLE_INVALIDATEDIBITS InvalidateDIBitsRequest;
857 CONSOLE_SETPALETTE SetPaletteRequest;
858 CONSOLE_GETSETCONSOLETITLE TitleRequest;
859 CONSOLE_GETLARGESTWINDOWSIZE GetLargestWindowSizeRequest;
860 CONSOLE_MENUCONTROL MenuControlRequest;
861 CONSOLE_SETMENUCLOSE SetMenuCloseRequest;
862 CONSOLE_SETWINDOWINFO SetWindowInfoRequest;
863 CONSOLE_GETWINDOW GetWindowRequest;
864 CONSOLE_SETICON SetIconRequest;
865
866 /* Read */
867 CONSOLE_READCONSOLE ReadConsoleRequest; // SrvReadConsole / ReadConsole
868 CONSOLE_GETINPUT GetInputRequest; // SrvGetConsoleInput / PeekConsoleInput & ReadConsoleInput
869 CONSOLE_READOUTPUT ReadOutputRequest; // SrvReadConsoleOutput / ReadConsoleOutput
870 CONSOLE_READOUTPUTCODE ReadOutputCodeRequest; // SrvReadConsoleOutputString / ReadConsoleOutputAttribute & ReadConsoleOutputCharacter
871 CONSOLE_GETNUMINPUTEVENTS GetNumInputEventsRequest;
872
873 /* Write */
874 CONSOLE_WRITECONSOLE WriteConsoleRequest; // SrvWriteConsole / WriteConsole
875 CONSOLE_WRITEINPUT WriteInputRequest;
876 CONSOLE_WRITEOUTPUT WriteOutputRequest;
877 CONSOLE_WRITEOUTPUTCODE WriteOutputCodeRequest;
878
879 CONSOLE_FILLOUTPUTCODE FillOutputRequest;
880 CONSOLE_SETTEXTATTRIB SetTextAttribRequest;
881
882 /* Aliases */
883 CONSOLE_ADDGETALIAS ConsoleAliasRequest;
884 CONSOLE_GETALLALIASES GetAllAliasesRequest;
885 CONSOLE_GETALLALIASESLENGTH GetAllAliasesLengthRequest;
886 CONSOLE_GETALIASESEXES GetAliasesExesRequest;
887 CONSOLE_GETALIASESEXESLENGTH GetAliasesExesLengthRequest;
888
889 /* History */
890 CONSOLE_GETCOMMANDHISTORY GetCommandHistoryRequest;
891 CONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest;
892 CONSOLE_EXPUNGECOMMANDHISTORY ExpungeCommandHistoryRequest;
893 CONSOLE_GETSETHISTORYINFO HistoryInfoRequest;
894 CONSOLE_SETHISTORYNUMBERCOMMANDS SetHistoryNumberCommandsRequest;
895 CONSOLE_SETHISTORYMODE SetHistoryModeRequest;
896
897 /* Input and Output Code Pages; keyboard */
898 CONSOLE_GETINPUTOUTPUTCP GetConsoleCPRequest;
899 CONSOLE_SETINPUTOUTPUTCP SetConsoleCPRequest;
900 CONSOLE_GETKBDLAYOUTNAME GetKbdLayoutNameRequest;
901 } Data;
902 } CONSOLE_API_MESSAGE, *PCONSOLE_API_MESSAGE;
903
904 // Check that a CONSOLE_API_MESSAGE can hold in a CSR_API_MESSAGE.
905 CHECK_API_MSG_SIZE(CONSOLE_API_MESSAGE);
906
907 #endif // _CONMSG_H
908
909 /* EOF */