[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; // WriteCoord
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 ConsoleHandle;
465 HANDLE OutputHandle;
466 COORD Coord;
467
468 CODE_TYPE CodeType;
469 CHAR CodeStaticBuffer[80];
470 union
471 {
472 PVOID pCode;
473 PCHAR AsciiChar;
474 PWCHAR UnicodeChar;
475 PWORD Attribute;
476 } pCode; // Either a pointer to a character or to an attribute.
477
478 ULONG NumCodes;
479 } CONSOLE_READOUTPUTCODE , *PCONSOLE_READOUTPUTCODE,
480 CONSOLE_WRITEOUTPUTCODE, *PCONSOLE_WRITEOUTPUTCODE;
481
482 typedef struct
483 {
484 HANDLE ConsoleHandle;
485 HANDLE OutputHandle;
486 COORD WriteCoord;
487
488 CODE_TYPE CodeType;
489 union
490 {
491 CHAR AsciiChar;
492 WCHAR UnicodeChar;
493 WORD Attribute;
494 } Code; // Either a character or an attribute.
495
496 ULONG NumCodes;
497 } CONSOLE_FILLOUTPUTCODE, *PCONSOLE_FILLOUTPUTCODE;
498
499 typedef struct
500 {
501 HANDLE ConsoleHandle;
502 HANDLE InputHandle;
503 INPUT_RECORD RecordStaticBuffer[5];
504 PINPUT_RECORD RecordBufPtr;
505 ULONG NumRecords;
506 WORD Flags;
507 BOOLEAN Unicode;
508 } CONSOLE_GETINPUT, *PCONSOLE_GETINPUT;
509
510 typedef struct
511 {
512 HANDLE ConsoleHandle;
513 HANDLE InputHandle;
514 INPUT_RECORD RecordStaticBuffer[5];
515 PINPUT_RECORD RecordBufPtr;
516 ULONG NumRecords;
517 BOOLEAN Unicode;
518 BOOLEAN AppendToEnd;
519 } CONSOLE_WRITEINPUT, *PCONSOLE_WRITEINPUT;
520
521 typedef struct
522 {
523 HANDLE OutputHandle;
524
525 BOOL Unicode;
526 COORD BufferSize;
527 COORD BufferCoord;
528 SMALL_RECT ReadRegion;
529 PCHAR_INFO CharInfo;
530 } CONSOLE_READOUTPUT, *PCONSOLE_READOUTPUT;
531
532 typedef struct
533 {
534 HANDLE ConsoleHandle;
535 HANDLE InputHandle;
536 ULONG NumberOfEvents;
537 } CONSOLE_GETNUMINPUTEVENTS, *PCONSOLE_GETNUMINPUTEVENTS;
538
539
540
541 typedef struct
542 {
543 HANDLE ConsoleHandle;
544 HANDLE Handle;
545 } CONSOLE_CLOSEHANDLE, *PCONSOLE_CLOSEHANDLE;
546
547 typedef struct
548 {
549 BOOL IsValid;
550 HANDLE ConsoleHandle;
551 HANDLE Handle;
552 } CONSOLE_VERIFYHANDLE, *PCONSOLE_VERIFYHANDLE;
553
554 typedef struct
555 {
556 HANDLE ConsoleHandle;
557 HANDLE SourceHandle;
558 DWORD DesiredAccess;
559 BOOLEAN InheritHandle;
560 DWORD Options;
561 HANDLE TargetHandle;
562 } CONSOLE_DUPLICATEHANDLE, *PCONSOLE_DUPLICATEHANDLE;
563
564 typedef struct
565 {
566 HANDLE ConsoleHandle;
567 HANDLE Handle;
568 DWORD Flags;
569 } CONSOLE_GETHANDLEINFO, *PCONSOLE_GETHANDLEINFO;
570
571 typedef struct
572 {
573 HANDLE ConsoleHandle;
574 HANDLE Handle;
575 DWORD Mask;
576 DWORD Flags;
577 } CONSOLE_SETHANDLEINFO, *PCONSOLE_SETHANDLEINFO;
578
579 /*
580 * Type of handles.
581 */
582 typedef enum _CONSOLE_HANDLE_TYPE
583 {
584 HANDLE_INPUT = 0x01,
585 HANDLE_OUTPUT = 0x02
586 } CONSOLE_HANDLE_TYPE;
587
588 typedef struct
589 {
590 HANDLE ConsoleHandle;
591 CONSOLE_HANDLE_TYPE HandleType;
592 DWORD DesiredAccess;
593 BOOL InheritHandle;
594 DWORD ShareMode;
595 HANDLE Handle;
596 } CONSOLE_OPENCONSOLE, *PCONSOLE_OPENCONSOLE;
597
598
599
600 typedef struct
601 {
602 HANDLE ConsoleHandle;
603 HANDLE OutputHandle;
604 COORD Size;
605 } CONSOLE_GETLARGESTWINDOWSIZE, *PCONSOLE_GETLARGESTWINDOWSIZE;
606
607 typedef struct
608 {
609 HANDLE ConsoleHandle;
610 HANDLE OutputHandle;
611 DWORD CmdIdLow;
612 DWORD CmdIdHigh;
613 HMENU MenuHandle;
614 } CONSOLE_MENUCONTROL, *PCONSOLE_MENUCONTROL;
615
616 typedef struct
617 {
618 HANDLE ConsoleHandle;
619 BOOL Enable;
620 } CONSOLE_SETMENUCLOSE, *PCONSOLE_SETMENUCLOSE;
621
622 typedef struct
623 {
624 HANDLE ConsoleHandle;
625 HANDLE OutputHandle;
626 BOOL Absolute;
627 SMALL_RECT WindowRect; // New console window position in the screen-buffer frame (Absolute == TRUE)
628 // or in the old window position frame (Absolute == FALSE).
629 } CONSOLE_SETWINDOWINFO, *PCONSOLE_SETWINDOWINFO;
630
631 typedef struct
632 {
633 HANDLE ConsoleHandle;
634 HWND WindowHandle;
635 } CONSOLE_GETWINDOW, *PCONSOLE_GETWINDOW;
636
637 typedef struct
638 {
639 HANDLE ConsoleHandle;
640 HICON IconHandle;
641 } CONSOLE_SETICON, *PCONSOLE_SETICON;
642
643
644
645 typedef struct
646 {
647 HANDLE ConsoleHandle;
648 USHORT SourceLength;
649 USHORT TargetLength; // Also used for storing the number of bytes written.
650 USHORT ExeLength;
651 PVOID Source;
652 PVOID Target;
653 PVOID ExeName;
654 BOOLEAN Unicode;
655 BOOLEAN Unicode2;
656 } CONSOLE_ADDGETALIAS, *PCONSOLE_ADDGETALIAS;
657
658 typedef struct
659 {
660 HANDLE ConsoleHandle;
661 USHORT ExeLength;
662 PVOID ExeName;
663 BOOLEAN Unicode;
664 BOOLEAN Unicode2;
665 ULONG AliasesBufferLength;
666 PVOID AliasesBuffer;
667 } CONSOLE_GETALLALIASES, *PCONSOLE_GETALLALIASES;
668
669 typedef struct
670 {
671 HANDLE ConsoleHandle;
672 USHORT ExeLength;
673 PVOID ExeName;
674 ULONG Length;
675 BOOLEAN Unicode;
676 BOOLEAN Unicode2;
677 } CONSOLE_GETALLALIASESLENGTH, *PCONSOLE_GETALLALIASESLENGTH;
678
679 typedef struct
680 {
681 HANDLE ConsoleHandle;
682 ULONG Length ; // ExeLength; // ExesLength
683 PVOID ExeNames;
684 BOOLEAN Unicode;
685 } CONSOLE_GETALIASESEXES, *PCONSOLE_GETALIASESEXES;
686
687 typedef struct
688 {
689 HANDLE ConsoleHandle;
690 ULONG Length;
691 BOOLEAN Unicode;
692 } CONSOLE_GETALIASESEXESLENGTH, *PCONSOLE_GETALIASESEXESLENGTH;
693
694
695
696 typedef struct
697 {
698 HANDLE ConsoleHandle;
699 ULONG HistoryLength;
700 PVOID History;
701 USHORT ExeLength;
702 PVOID ExeName;
703 BOOLEAN Unicode;
704 BOOLEAN Unicode2;
705 } CONSOLE_GETCOMMANDHISTORY, *PCONSOLE_GETCOMMANDHISTORY;
706
707 typedef struct
708 {
709 HANDLE ConsoleHandle;
710 ULONG HistoryLength;
711 USHORT ExeLength;
712 PVOID ExeName;
713 BOOLEAN Unicode;
714 BOOLEAN Unicode2;
715 } CONSOLE_GETCOMMANDHISTORYLENGTH, *PCONSOLE_GETCOMMANDHISTORYLENGTH;
716
717 typedef struct
718 {
719 HANDLE ConsoleHandle;
720 USHORT ExeLength;
721 PVOID ExeName;
722 BOOLEAN Unicode;
723 BOOLEAN Unicode2;
724 } CONSOLE_EXPUNGECOMMANDHISTORY, *PCONSOLE_EXPUNGECOMMANDHISTORY;
725
726 typedef struct
727 {
728 UINT HistoryBufferSize;
729 UINT NumberOfHistoryBuffers;
730 DWORD dwFlags;
731 } CONSOLE_GETSETHISTORYINFO, *PCONSOLE_GETSETHISTORYINFO;
732
733 typedef struct
734 {
735 HANDLE ConsoleHandle;
736 ULONG NumCommands;
737 USHORT ExeLength;
738 PVOID ExeName;
739 BOOLEAN Unicode;
740 BOOLEAN Unicode2;
741 } CONSOLE_SETHISTORYNUMBERCOMMANDS, *PCONSOLE_SETHISTORYNUMBERCOMMANDS;
742
743 typedef struct
744 {
745 HANDLE ConsoleHandle;
746 ULONG Mode;
747 } CONSOLE_SETHISTORYMODE, *PCONSOLE_SETHISTORYMODE;
748
749
750
751 typedef struct
752 {
753 HANDLE ConsoleHandle;
754 HANDLE OutputHandle;
755 COORD Size;
756 } CONSOLE_SETSCREENBUFFERSIZE, *PCONSOLE_SETSCREENBUFFERSIZE;
757
758 typedef struct
759 {
760 HANDLE ConsoleHandle;
761 CONSOLE_SELECTION_INFO Info;
762 } CONSOLE_GETSELECTIONINFO, *PCONSOLE_GETSELECTIONINFO;
763
764 typedef struct
765 {
766 HANDLE ConsoleHandle;
767 UINT CodePage;
768 BOOL OutputCP; // TRUE : Output Code Page ; FALSE : Input Code Page
769 } CONSOLE_GETINPUTOUTPUTCP, *PCONSOLE_GETINPUTOUTPUTCP;
770
771 typedef struct
772 {
773 HANDLE ConsoleHandle;
774 UINT CodePage;
775 BOOL OutputCP; // TRUE : Output Code Page ; FALSE : Input Code Page
776 HANDLE EventHandle;
777 } CONSOLE_SETINPUTOUTPUTCP, *PCONSOLE_SETINPUTOUTPUTCP;
778
779 typedef struct _CONSOLE_API_MESSAGE
780 {
781 PORT_MESSAGE Header;
782
783 PCSR_CAPTURE_BUFFER CsrCaptureData;
784 CSR_API_NUMBER ApiNumber;
785 NTSTATUS Status;
786 ULONG Reserved;
787 union
788 {
789 /* Console initialization and uninitialization */
790 CONSOLE_ALLOCCONSOLE AllocConsoleRequest;
791 CONSOLE_ATTACHCONSOLE AttachConsoleRequest;
792 CONSOLE_FREECONSOLE FreeConsoleRequest;
793
794 /* Processes */
795 CONSOLE_GETPROCESSLIST GetProcessListRequest;
796 CONSOLE_GENERATECTRLEVENT GenerateCtrlEventRequest;
797 CONSOLE_NOTIFYLASTCLOSE NotifyLastCloseRequest;
798
799 /* Handles */
800 CONSOLE_OPENCONSOLE OpenConsoleRequest;
801 CONSOLE_CLOSEHANDLE CloseHandleRequest;
802 CONSOLE_VERIFYHANDLE VerifyHandleRequest;
803 CONSOLE_DUPLICATEHANDLE DuplicateHandleRequest;
804 CONSOLE_GETHANDLEINFO GetHandleInfoRequest;
805 CONSOLE_SETHANDLEINFO SetHandleInfoRequest;
806
807 /* Cursor & Mouse */
808 CONSOLE_SHOWCURSOR ShowCursorRequest;
809 CONSOLE_SETCURSOR SetCursorRequest;
810 CONSOLE_GETSETCURSORINFO CursorInfoRequest;
811 CONSOLE_SETCURSORPOSITION SetCursorPositionRequest;
812 CONSOLE_GETMOUSEINFO GetMouseInfoRequest;
813
814 /* Screen-buffer */
815 CONSOLE_CREATESCREENBUFFER CreateScreenBufferRequest;
816 CONSOLE_SETACTIVESCREENBUFFER SetScreenBufferRequest;
817 CONSOLE_GETSCREENBUFFERINFO ScreenBufferInfoRequest;
818 CONSOLE_SETSCREENBUFFERSIZE SetScreenBufferSizeRequest;
819 CONSOLE_SCROLLSCREENBUFFER ScrollScreenBufferRequest;
820
821 CONSOLE_GETSELECTIONINFO GetSelectionInfoRequest;
822 CONSOLE_FLUSHINPUTBUFFER FlushInputBufferRequest;
823
824 /* Console mode */
825 CONSOLE_GETSETCONSOLEMODE ConsoleModeRequest;
826 CONSOLE_GETDISPLAYMODE GetDisplayModeRequest;
827 CONSOLE_SETDISPLAYMODE SetDisplayModeRequest;
828 CONSOLE_GETSETHWSTATE HardwareStateRequest;
829
830 /* Console window */
831 CONSOLE_INVALIDATEDIBITS InvalidateDIBitsRequest;
832 CONSOLE_SETPALETTE SetPaletteRequest;
833 CONSOLE_GETSETCONSOLETITLE TitleRequest;
834 CONSOLE_GETLARGESTWINDOWSIZE GetLargestWindowSizeRequest;
835 CONSOLE_MENUCONTROL MenuControlRequest;
836 CONSOLE_SETMENUCLOSE SetMenuCloseRequest;
837 CONSOLE_SETWINDOWINFO SetWindowInfoRequest;
838 CONSOLE_GETWINDOW GetWindowRequest;
839 CONSOLE_SETICON SetIconRequest;
840
841 /* Read */
842 CONSOLE_READCONSOLE ReadConsoleRequest; // SrvReadConsole / ReadConsole
843 CONSOLE_GETINPUT GetInputRequest; // SrvGetConsoleInput / PeekConsoleInput & ReadConsoleInput
844 CONSOLE_READOUTPUT ReadOutputRequest; // SrvReadConsoleOutput / ReadConsoleOutput
845 CONSOLE_READOUTPUTCODE ReadOutputCodeRequest; // SrvReadConsoleOutputString / ReadConsoleOutputAttribute & ReadConsoleOutputCharacter
846 CONSOLE_GETNUMINPUTEVENTS GetNumInputEventsRequest;
847
848 /* Write */
849 CONSOLE_WRITECONSOLE WriteConsoleRequest; // SrvWriteConsole / WriteConsole
850 CONSOLE_WRITEINPUT WriteInputRequest;
851 CONSOLE_WRITEOUTPUT WriteOutputRequest;
852 CONSOLE_WRITEOUTPUTCODE WriteOutputCodeRequest;
853
854 CONSOLE_FILLOUTPUTCODE FillOutputRequest;
855 CONSOLE_SETTEXTATTRIB SetTextAttribRequest;
856
857 /* Aliases */
858 CONSOLE_ADDGETALIAS ConsoleAliasRequest;
859 CONSOLE_GETALLALIASES GetAllAliasesRequest;
860 CONSOLE_GETALLALIASESLENGTH GetAllAliasesLengthRequest;
861 CONSOLE_GETALIASESEXES GetAliasesExesRequest;
862 CONSOLE_GETALIASESEXESLENGTH GetAliasesExesLengthRequest;
863
864 /* History */
865 CONSOLE_GETCOMMANDHISTORY GetCommandHistoryRequest;
866 CONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest;
867 CONSOLE_EXPUNGECOMMANDHISTORY ExpungeCommandHistoryRequest;
868 CONSOLE_GETSETHISTORYINFO HistoryInfoRequest;
869 CONSOLE_SETHISTORYNUMBERCOMMANDS SetHistoryNumberCommandsRequest;
870 CONSOLE_SETHISTORYMODE SetHistoryModeRequest;
871
872 /* Input and Output Code Pages */
873 CONSOLE_GETINPUTOUTPUTCP GetConsoleCPRequest;
874 CONSOLE_SETINPUTOUTPUTCP SetConsoleCPRequest;
875 } Data;
876 } CONSOLE_API_MESSAGE, *PCONSOLE_API_MESSAGE;
877
878 // Check that a CONSOLE_API_MESSAGE can hold in a CSR_API_MESSAGE.
879 CHECK_API_MSG_SIZE(CONSOLE_API_MESSAGE);
880
881 #endif // _CONMSG_H
882
883 /* EOF */