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