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