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