[CONSRV]
[reactos.git] / win32ss / user / winsrv / consrv / condrv / dummyterm.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Console Server DLL
4 * FILE: condrv/dummyterm.c
5 * PURPOSE: Dummy Terminal used when no terminal
6 * is attached to the specified console.
7 * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
8 */
9
10 /* INCLUDES *******************************************************************/
11
12 #include <consrv.h>
13
14 /* DUMMY TERMINAL INTERFACE ***************************************************/
15
16 static NTSTATUS NTAPI
17 DummyInitTerminal(IN OUT PTERMINAL This,
18 IN PCONSOLE Console)
19 {
20 return STATUS_SUCCESS;
21 }
22
23 static VOID NTAPI
24 DummyDeinitTerminal(IN OUT PTERMINAL This)
25 {
26 }
27
28 static VOID NTAPI
29 DummyDrawRegion(IN OUT PTERMINAL This,
30 SMALL_RECT* Region)
31 {
32 }
33
34
35
36 /************ Line discipline ***************/
37
38 static NTSTATUS NTAPI
39 DummyReadStream(IN OUT PTERMINAL This,
40 /**/IN PUNICODE_STRING ExeName /**/OPTIONAL/**/,/**/
41 IN BOOLEAN Unicode,
42 /**PWCHAR Buffer,**/
43 OUT PVOID Buffer,
44 IN OUT PCONSOLE_READCONSOLE_CONTROL ReadControl,
45 IN ULONG NumCharsToRead,
46 OUT PULONG NumCharsRead OPTIONAL)
47 {
48 /*
49 * We were called because the console was in cooked mode.
50 * There is nothing to read, wait until a real terminal
51 * is plugged into the console.
52 */
53 return STATUS_PENDING;
54 }
55
56 static NTSTATUS NTAPI
57 DummyWriteStream(IN OUT PTERMINAL This,
58 PTEXTMODE_SCREEN_BUFFER Buff,
59 PWCHAR Buffer,
60 DWORD Length,
61 BOOL Attrib)
62 {
63 /*
64 * We were called because the console was in cooked mode.
65 * There is nothing to write, wait until a real terminal
66 * is plugged into the console.
67 */
68
69 // /* Stop here if the console is paused */
70 // if (Console->UnpauseEvent != NULL) return STATUS_PENDING;
71
72 return STATUS_PENDING;
73 }
74
75 /************ Line discipline ***************/
76
77
78
79 static BOOL NTAPI
80 DummySetCursorInfo(IN OUT PTERMINAL This,
81 PCONSOLE_SCREEN_BUFFER ScreenBuffer)
82 {
83 return TRUE;
84 }
85
86 static BOOL NTAPI
87 DummySetScreenInfo(IN OUT PTERMINAL This,
88 PCONSOLE_SCREEN_BUFFER ScreenBuffer,
89 SHORT OldCursorX,
90 SHORT OldCursorY)
91 {
92 return TRUE;
93 }
94
95 static VOID NTAPI
96 DummyResizeTerminal(IN OUT PTERMINAL This)
97 {
98 }
99
100 static VOID NTAPI
101 DummySetActiveScreenBuffer(IN OUT PTERMINAL This)
102 {
103 }
104
105 static VOID NTAPI
106 DummyReleaseScreenBuffer(IN OUT PTERMINAL This,
107 IN PCONSOLE_SCREEN_BUFFER ScreenBuffer)
108 {
109 }
110
111 static VOID NTAPI
112 DummyChangeTitle(IN OUT PTERMINAL This)
113 {
114 }
115
116 static VOID NTAPI
117 DummyGetLargestConsoleWindowSize(IN OUT PTERMINAL This,
118 PCOORD pSize)
119 {
120 }
121
122 /*
123 static BOOL NTAPI
124 DummyGetSelectionInfo(IN OUT PTERMINAL This,
125 PCONSOLE_SELECTION_INFO pSelectionInfo)
126 {
127 return TRUE;
128 }
129 */
130
131 static BOOL NTAPI
132 DummySetPalette(IN OUT PTERMINAL This,
133 HPALETTE PaletteHandle,
134 UINT PaletteUsage)
135 {
136 return TRUE;
137 }
138
139 static INT NTAPI
140 DummyShowMouseCursor(IN OUT PTERMINAL This,
141 BOOL Show)
142 {
143 return 0;
144 }
145
146 static TERMINAL_VTBL DummyVtbl =
147 {
148 DummyInitTerminal,
149 DummyDeinitTerminal,
150 DummyDrawRegion,
151
152 DummyReadStream,
153 DummyWriteStream,
154
155 DummySetCursorInfo,
156 DummySetScreenInfo,
157 DummyResizeTerminal,
158 DummySetActiveScreenBuffer,
159 DummyReleaseScreenBuffer,
160 DummyChangeTitle,
161 DummyGetLargestConsoleWindowSize,
162 // DummyGetSelectionInfo,
163 DummySetPalette,
164 DummyShowMouseCursor,
165 };
166
167 VOID
168 ResetTerminal(IN PCONSOLE Console)
169 {
170 if (!Console) return;
171
172 /* Reinitialize the terminal interface */
173 RtlZeroMemory(&Console->TermIFace, sizeof(Console->TermIFace));
174 Console->TermIFace.Vtbl = &DummyVtbl;
175 }
176
177 /* EOF */