c515ce2dc489ce1aeed95d7add2567d9507cfdfe
[reactos.git] / reactos / drivers / sac / driver / concmd.c
1 /*
2 * PROJECT: ReactOS Drivers
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: drivers/sac/driver/concmd.c
5 * PURPOSE: Driver for the Server Administration Console (SAC) for EMS
6 * PROGRAMMERS: ReactOS Portable Systems Group
7 */
8
9 /* INCLUDES ******************************************************************/
10
11 #include "sacdrv.h"
12
13 /* GLOBALS *******************************************************************/
14
15 PWCHAR GlobalBuffer;
16 ULONG GlobalBufferSize;
17
18 /* FUNCTIONS *****************************************************************/
19
20 NTSTATUS
21 DoChannelListCommand(
22 VOID
23 )
24 {
25 return STATUS_NOT_IMPLEMENTED;
26 }
27
28 NTSTATUS
29 DoChannelCloseByNameCommand(
30 IN PCHAR Count
31 )
32 {
33 return STATUS_NOT_IMPLEMENTED;
34 }
35
36 NTSTATUS
37 DoChannelCloseByIndexCommand(
38 IN ULONG ChannelIndex
39 )
40 {
41 return STATUS_NOT_IMPLEMENTED;
42 }
43
44 NTSTATUS
45 DoChannelSwitchByNameCommand(
46 IN PCHAR Count
47 )
48 {
49 return STATUS_NOT_IMPLEMENTED;
50 }
51
52 NTSTATUS
53 DoChannelSwitchByIndexCommand(
54 IN ULONG ChannelIndex
55 )
56 {
57 return STATUS_NOT_IMPLEMENTED;
58 }
59
60 NTSTATUS
61 GetTListInfo(
62 IN PVOID TListData,
63 IN ULONG InputSize,
64 IN ULONG TotalSize
65 )
66 {
67 return STATUS_NOT_IMPLEMENTED;
68 }
69
70 VOID
71 PrintTListInfo(
72 IN PVOID TListData
73 )
74 {
75
76 }
77
78 VOID
79 PutMore(
80 OUT PBOOLEAN ScreenFull
81 )
82 {
83
84 }
85
86 BOOLEAN
87 RetrieveIpAddressFromString(
88 IN PWCHAR IpString,
89 OUT PULONG IpAddress
90 )
91 {
92 return FALSE;
93 }
94
95 NTSTATUS
96 CallQueryIPIOCTL(
97 IN HANDLE DriverHandle,
98 IN PVOID DriverObject,
99 IN HANDLE WaitEvent,
100 IN PIO_STATUS_BLOCK IoStatusBlock,
101 IN PVOID InputBuffer,
102 IN ULONG InputBufferLength,
103 IN PVOID OutputBuffer,
104 IN ULONG OutputBufferLength,
105 IN BOOLEAN PrintMessage,
106 OUT PBOOLEAN MessagePrinted
107 )
108 {
109 return STATUS_NOT_IMPLEMENTED;
110 }
111
112 VOID
113 NTAPI
114 DoRebootCommand(IN BOOLEAN Reboot)
115 {
116 LARGE_INTEGER Timeout, TickCount;
117 NTSTATUS Status;
118 KEVENT Event;
119 SAC_DBG(1, "SAC DoRebootCommand: Entering.\n");
120
121 /* Get the current time now, and setup a timeout in 1 second */
122 KeQueryTickCount(&TickCount);
123 Timeout.QuadPart = TickCount.QuadPart / (10000000 / KeQueryTimeIncrement());
124
125 /* Check if the timeout is small enough */
126 if (Timeout.QuadPart < 60 )
127 {
128 /* Show the prompt */
129 ConMgrSimpleEventMessage(Reboot ?
130 SAC_RESTART_PROMPT : SAC_SHUTDOWN_PROMPT,
131 TRUE);
132
133 /* Do the wait */
134 KeInitializeEvent(&Event, SynchronizationEvent, 0);
135 Timeout.QuadPart = -10000000 * (60 - Timeout.LowPart);
136 KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, &Timeout);
137 }
138
139 /* Do a shutdown or a reboot, based on the request */
140 Status = NtShutdownSystem(Reboot ? ShutdownReboot : ShutdownPowerOff);
141
142 /* Check if anyone in the command channel already allocated this */
143 if (!GlobalBuffer)
144 {
145 /* Allocate it */
146 GlobalBuffer = SacAllocatePool(PAGE_SIZE, GLOBAL_BLOCK_TAG);
147 if (!GlobalBuffer)
148 {
149 /* We need the global buffer, bail out without it*/
150 SacPutSimpleMessage(SAC_OUT_OF_MEMORY_PROMPT);
151 SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoRebootCommand: Exiting (1).\n");
152 return;
153 }
154
155 /* Set the size of the buffer */
156 GlobalBufferSize = PAGE_SIZE;
157 }
158
159 /* We came back from a reboot, this doesn't make sense, tell the user */
160 SacPutSimpleMessage(Reboot ? SAC_RESTART_FAIL_PROMPT : SAC_SHUTDOWN_FAIL_PROMPT);
161 swprintf(GlobalBuffer, GetMessage(SAC_FAIL_PROMPT), Status);
162 SacPutString(GlobalBuffer);
163 SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoRebootCommand: Exiting.\n");
164 }
165
166 VOID
167 NTAPI
168 DoFullInfoCommand(VOID)
169 {
170
171 }
172
173 VOID
174 NTAPI
175 DoPagingCommand(VOID)
176 {
177
178 }
179
180 VOID
181 NTAPI
182 DoSetTimeCommand(IN PCHAR InputTime)
183 {
184
185 }
186
187 VOID
188 NTAPI
189 DoKillCommand(IN PCHAR KillString)
190 {
191
192 }
193
194 VOID
195 NTAPI
196 DoLowerPriorityCommand(IN PCHAR PrioString)
197 {
198
199 }
200
201 VOID
202 NTAPI
203 DoRaisePriorityCommand(IN PCHAR PrioString)
204 {
205
206 }
207
208 VOID
209 NTAPI
210 DoLimitMemoryCommand(IN PCHAR LimitString)
211 {
212
213 }
214
215 VOID
216 NTAPI
217 DoCrashCommand(VOID)
218 {
219
220 }
221
222 VOID
223 NTAPI
224 DoMachineInformationCommand(VOID)
225 {
226
227 }
228
229 VOID
230 NTAPI
231 DoChannelCommand(IN PCHAR ChannelString)
232 {
233
234 }
235
236 VOID
237 NTAPI
238 DoCmdCommand(IN PCHAR InputString)
239 {
240
241 }
242
243 VOID
244 NTAPI
245 DoLockCommand(VOID)
246 {
247
248 }
249
250 #define PRINT_HELP_MESSAGE(x) \
251 { \
252 Count += NewCount; \
253 NewCount = GetMessageLineCount(x); \
254 if ( (NewCount + Count) > SAC_VTUTF8_COL_HEIGHT) \
255 { \
256 PutMore(&ScreenFull); \
257 if (ScreenFull) return; \
258 Count = 0; \
259 } \
260 SacPutSimpleMessage(x); \
261 }
262
263 VOID
264 NTAPI
265 DoHelpCommand(VOID)
266 {
267 ULONG NewCount = 0, Count = 0;
268 BOOLEAN ScreenFull = FALSE;
269
270 PRINT_HELP_MESSAGE(112);
271 PRINT_HELP_MESSAGE(12);
272 PRINT_HELP_MESSAGE(13);
273 PRINT_HELP_MESSAGE(14);
274 PRINT_HELP_MESSAGE(15);
275 PRINT_HELP_MESSAGE(16);
276 PRINT_HELP_MESSAGE(31);
277 PRINT_HELP_MESSAGE(18);
278 PRINT_HELP_MESSAGE(19);
279 PRINT_HELP_MESSAGE(32);
280 PRINT_HELP_MESSAGE(20);
281 PRINT_HELP_MESSAGE(21);
282 PRINT_HELP_MESSAGE(22);
283 PRINT_HELP_MESSAGE(23);
284 PRINT_HELP_MESSAGE(24);
285 PRINT_HELP_MESSAGE(25);
286 PRINT_HELP_MESSAGE(27);
287 PRINT_HELP_MESSAGE(28);
288 PRINT_HELP_MESSAGE(29);
289 }
290
291 VOID
292 NTAPI
293 DoGetNetInfo(IN BOOLEAN DoPrint)
294 {
295
296 }
297
298 VOID
299 NTAPI
300 DoSetIpAddressCommand(IN PCHAR IpString)
301 {
302
303 }
304
305 VOID
306 NTAPI
307 DoTlistCommand(VOID)
308 {
309
310 }