update for HEAD-2003091401
[reactos.git] / include / csrss / csrss.h
1 #ifndef __INCLUDE_CSRSS_CSRSS_H
2 #define __INCLUDE_CSRSS_CSRSS_H
3
4 #include <windows.h>
5 #include <napi/lpc.h>
6 #include <ddk/ntddblue.h>
7 #include <ntos/keyboard.h>
8
9 #define CSR_PRIORITY_CLASS_NORMAL       (0x10)
10 #define CSR_PRIORITY_CLASS_IDLE         (0x20)
11 #define CSR_PRIORITY_CLASS_HIGH         (0x40)
12 #define CSR_PRIORITY_CLASS_REALTIME     (0x80)
13
14 #define CSR_CSRSS_SECTION_SIZE          (65536)
15
16 typedef __declspec(noreturn) VOID CALLBACK(*PCONTROLDISPATCHER)(DWORD);
17
18 typedef struct
19 {
20 } CSRSS_CONNECT_PROCESS_REQUEST, PCSRSS_CONNECT_PROCESS_REQUEST;
21
22 typedef struct
23 {
24 } CSRSS_CONNECT_PROCESS_REPLY, PCSRSS_CONNECT_PROCESS_REPLY;
25
26 typedef struct
27 {
28    ULONG NewProcessId;
29    ULONG Flags;
30    PCONTROLDISPATCHER CtrlDispatcher;
31 } CSRSS_CREATE_PROCESS_REQUEST, *PCSRSS_CREATE_PROCESS_REQUEST;
32
33 typedef struct
34 {
35    HANDLE InputHandle;
36    HANDLE OutputHandle;
37 } CSRSS_CREATE_PROCESS_REPLY, *PCSRSS_CREATE_PROCESS_REPLY;
38
39 typedef struct
40 {
41    HANDLE ConsoleHandle;
42    ULONG NrCharactersToWrite;
43    BYTE Buffer[1];
44 } CSRSS_WRITE_CONSOLE_REQUEST, *PCSRSS_WRITE_CONSOLE_REQUEST;
45
46 typedef struct
47 {
48    ULONG NrCharactersWritten;
49 } CSRSS_WRITE_CONSOLE_REPLY, *PCSRSS_WRITE_CONSOLE_REPLY;
50
51 typedef struct
52 {
53    HANDLE ConsoleHandle;
54    WORD NrCharactersToRead;
55    WORD nCharsCanBeDeleted;     /* number of chars already in buffer that can be backspaced */
56 } CSRSS_READ_CONSOLE_REQUEST, *PCSRSS_READ_CONSOLE_REQUEST;
57
58 typedef struct
59 {
60    HANDLE EventHandle;
61    ULONG NrCharactersRead;
62    BYTE Buffer[1];
63 } CSRSS_READ_CONSOLE_REPLY, *PCSRSS_READ_CONSOLE_REPLY;
64
65 typedef struct
66 {
67    PCONTROLDISPATCHER CtrlDispatcher;
68 } CSRSS_ALLOC_CONSOLE_REQUEST, *PCSRSS_ALLOC_CONSOLE_REQUEST;
69
70 typedef struct
71 {
72    HANDLE InputHandle;
73    HANDLE OutputHandle;
74 } CSRSS_ALLOC_CONSOLE_REPLY, *PCSRSS_ALLOC_CONSOLE_REPLY;
75
76 typedef struct
77 {
78    HANDLE ConsoleHandle;
79 } CSRSS_SCREEN_BUFFER_INFO_REQUEST, *PCSRSS_SCREEN_BUFFER_INFO_REQUEST;
80
81 typedef struct
82 {
83    CONSOLE_SCREEN_BUFFER_INFO Info;
84 } CSRSS_SCREEN_BUFFER_INFO_REPLY, *PCSRSS_SCREEN_BUFFER_INFO_REPLY;
85
86 typedef struct
87 {
88    HANDLE ConsoleHandle;
89    COORD Position;
90 } CSRSS_SET_CURSOR_REQUEST, *PCSRSS_SET_CURSOR_REQUEST;
91
92 typedef struct
93 {
94    HANDLE ConsoleHandle;
95    CHAR Char;
96    COORD Position;
97    WORD Length;
98 } CSRSS_FILL_OUTPUT_REQUEST, *PCSRSS_FILL_OUTPUT_REQUEST;
99
100 typedef struct
101 {
102    HANDLE ConsoleHandle;
103    CHAR Attribute;
104    COORD Coord;
105    WORD Length;
106 } CSRSS_FILL_OUTPUT_ATTRIB_REQUEST, *PCSRSS_FILL_OUTPUT_ATTRIB_REQUEST;
107
108 typedef struct
109 {
110    HANDLE ConsoleHandle;
111 } CSRSS_READ_INPUT_REQUEST, *PCSRSS_READ_INPUT_REQUEST;
112
113 typedef struct
114 {
115    INPUT_RECORD Input;
116    BOOL MoreEvents;
117    HANDLE Event;
118 } CSRSS_READ_INPUT_REPLY, *PCSRSS_READ_INPUT_REPLY;
119
120 typedef struct
121 {
122    HANDLE ConsoleHandle;
123    WORD Length;
124    COORD Coord;
125    CHAR String[1];
126 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST;
127
128 typedef struct
129 {
130    COORD EndCoord;
131 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REPLY, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REPLY;
132
133 typedef struct
134 {
135    HANDLE ConsoleHandle;
136    WORD Length;
137    COORD Coord;
138    CHAR String[1];
139 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST;
140
141 typedef struct
142 {
143    COORD EndCoord;
144 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REPLY, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REPLY;
145
146 typedef struct
147 {
148    HANDLE ConsoleHandle;
149 } CSRSS_GET_CURSOR_INFO_REQUEST, *PCSRSS_GET_CURSOR_INFO_REQUEST;
150
151 typedef struct
152 {
153    CONSOLE_CURSOR_INFO Info;
154 } CSRSS_GET_CURSOR_INFO_REPLY, *PCSRSS_GET_CURSOR_INFO_REPLY;
155
156 typedef struct
157 {
158    HANDLE ConsoleHandle;
159    CONSOLE_CURSOR_INFO Info;
160 } CSRSS_SET_CURSOR_INFO_REQUEST, *PCSRSS_SET_CURSOR_INFO_REQUEST;
161
162 typedef struct
163 {
164    HANDLE ConsoleHandle;
165    CHAR Attrib;
166 } CSRSS_SET_ATTRIB_REQUEST, *PCSRSS_SET_ATTRIB_REQUEST;
167
168 typedef struct
169 {
170   HANDLE ConsoleHandle;
171   DWORD Mode;
172 } CSRSS_SET_CONSOLE_MODE_REQUEST, *PCSRSS_SET_CONSOLE_MODE_REQUEST;
173
174 typedef struct
175 {
176   HANDLE ConsoleHandle;
177 } CSRSS_GET_CONSOLE_MODE_REQUEST, *PCSRSS_GET_CONSOLE_MODE_REQUEST;
178
179 typedef struct
180 {
181   DWORD ConsoleMode;
182 } CSRSS_GET_CONSOLE_MODE_REPLY, *PCSRSS_GET_CONSOLE_MODE_REPLY;
183
184 typedef struct
185 {
186   /* may want to add some parameters here someday */
187 } CSRSS_CREATE_SCREEN_BUFFER_REQUEST, *PCSRSS_CREATE_SCREEN_BUFFER_REQUEST;
188
189 typedef struct
190 {
191    HANDLE OutputHandle;  /* handle to newly created screen buffer */
192 } CSRSS_CREATE_SCREEN_BUFFER_REPLY, *PCSRSS_CREATE_SCREEN_BUFFER_REPLY;
193
194 typedef struct
195 {
196    HANDLE OutputHandle;  /* handle to screen buffer to switch to */
197 } CSRSS_SET_ACTIVE_SCREEN_BUFFER_REQUEST, *PCSRSS_SET_ACTIVE_SCREEN_BUFFER_REQUEST;
198
199 typedef struct
200 {
201         HANDLE  UniqueThread;
202 } CSRSS_IDENTIFY_ALERTABLE_THREAD_REQUEST, * PCSRSS_IDENTIFY_ALERTABLE_THREAD_REQUEST;
203
204 typedef struct
205 {
206         CLIENT_ID       Cid;
207 } CSRSS_IDENTIFY_ALERTABLE_THREAD_REPLY, * PCSRSS_IDENTIFY_ALERTABLE_THREAD_REPLY;
208
209 typedef struct
210 {
211   HANDLE Console;
212   DWORD Length;
213   WCHAR Title[1];
214 } CSRSS_SET_TITLE_REQUEST, *PCSRSS_SET_TITLE_REQUEST;
215
216 typedef struct
217 {
218    HANDLE ConsoleHandle;
219 } CSRSS_GET_TITLE_REQUEST, *PCSRSS_GET_TITLE_REQUEST;
220
221 typedef struct
222 {
223   HANDLE ConsoleHandle;
224   DWORD Length;
225   WCHAR Title[1];
226 } CSRSS_GET_TITLE_REPLY, *PCSRSS_GET_TITLE_REPLY;
227
228 typedef struct
229 {
230   HANDLE ConsoleHandle;
231   COORD BufferSize;
232   COORD BufferCoord;
233   SMALL_RECT WriteRegion;
234   CHAR_INFO* CharInfo;
235 } CSRSS_WRITE_CONSOLE_OUTPUT_REQUEST, *PCSRSS_WRITE_CONSOLE_OUTPUT_REQUEST;
236
237 typedef struct
238 {
239   SMALL_RECT WriteRegion;
240 } CSRSS_WRITE_CONSOLE_OUTPUT_REPLY, *PCSRSS_WRITE_CONSOLE_OUTPUT_REPLY;
241
242 typedef struct
243 {
244    HANDLE ConsoleInput;
245 } CSRSS_FLUSH_INPUT_BUFFER_REQUEST, *PCSRSS_FLUSH_INPUT_BUFFER_REQUEST;
246
247 typedef struct
248 {
249   HANDLE     ConsoleHandle;
250   SMALL_RECT ScrollRectangle;
251   BOOLEAN    UseClipRectangle;
252   SMALL_RECT ClipRectangle;
253   COORD      DestinationOrigin;
254   CHAR_INFO  Fill;
255 } CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER_REQUEST, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER_REQUEST;
256
257 typedef struct
258 {
259   HANDLE ConsoleHandle;
260   DWORD NumCharsToRead;
261   COORD ReadCoord;
262 }CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST;
263
264 typedef struct
265 {
266   COORD EndCoord;
267   CHAR String[1];
268 }CSRSS_READ_CONSOLE_OUTPUT_CHAR_REPLY, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR_REPLY;
269
270 typedef struct
271 {
272   HANDLE ConsoleHandle;
273   DWORD NumAttrsToRead;
274   COORD ReadCoord;
275 }CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST;
276
277 typedef struct
278 {
279   COORD EndCoord;
280   CHAR String[1];
281 }CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REPLY, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REPLY;
282
283 typedef struct
284 {
285   HANDLE ConsoleHandle;
286 }CSRSS_GET_NUM_INPUT_EVENTS_REQUEST, *PCSRSS_GET_NUM_INPUT_EVENTS_REQUEST;
287
288 typedef struct
289 {
290    DWORD NumInputEvents;
291 }CSRSS_GET_NUM_INPUT_EVENTS_REPLY, *PCSRSS_GET_NUM_INPUT_EVENTS_REPLY;
292
293 typedef struct
294 {
295   DWORD ProcessId;
296 } CSRSS_REGISTER_SERVICES_PROCESS_REQUEST, *PCSRSS_REGISTER_SERVICES_PROCESS_REQUEST;
297
298 typedef struct
299 {
300   UINT Flags;
301   DWORD Reserved;
302 } CSRSS_EXIT_REACTOS_REQUEST, *PCSRSS_EXIT_REACTOS_REQUEST;
303
304 typedef struct
305 {
306   DWORD Level;
307   DWORD Flags;
308 } CSRSS_SHUTDOWN_PARAMETERS, *PCSRSS_SHUTDOWN_PARAMETERS;
309
310 typedef struct
311 {
312   HANDLE ConsoleHandle;
313   DWORD Length;
314   INPUT_RECORD* InputRecord;
315 } CSRSS_PEEK_CONSOLE_INPUT_REQUEST, *PCSRSS_PEEK_CONSOLE_INPUT_REQUEST;
316
317 typedef struct
318 {
319   DWORD Length;
320 } CSRSS_PEEK_CONSOLE_INPUT_REPLY, *PCSRSS_PEEK_CONSOLE_INPUT_REPLY;
321
322 typedef struct
323 {
324   HANDLE ConsoleHandle;
325   COORD BufferSize;
326   COORD BufferCoord;
327   SMALL_RECT ReadRegion;
328   CHAR_INFO* CharInfo;
329 } CSRSS_READ_CONSOLE_OUTPUT_REQUEST, *PCSRSS_READ_CONSOLE_OUTPUT_REQUEST;
330
331 typedef struct
332 {
333   SMALL_RECT ReadRegion;
334 } CSRSS_READ_CONSOLE_OUTPUT_REPLY, *PCSRSS_READ_CONSOLE_OUTPUT_REPLY;
335
336 typedef struct
337 {
338   HANDLE ConsoleHandle;
339   DWORD Length;
340   INPUT_RECORD* InputRecord;
341 } CSRSS_WRITE_CONSOLE_INPUT_REQUEST, *PCSRSS_WRITE_CONSOLE_INPUT_REQUEST;
342
343 typedef struct
344 {
345   DWORD Length;
346 } CSRSS_WRITE_CONSOLE_INPUT_REPLY, *PCSRSS_WRITE_CONSOLE_INPUT_REPLY;
347
348 typedef struct
349 {
350   HANDLE InputHandle;
351 } CSRSS_GET_INPUT_HANDLE_REPLY, *PCSRSS_GET_INPUT_HANDLE_REPLY;
352
353 typedef struct
354 {
355   HANDLE OutputHandle;
356 } CSRSS_GET_OUTPUT_HANDLE_REPLY, *PCSRSS_GET_OUTPUT_HANDLE_REPLY;
357
358 typedef struct
359 {
360   HANDLE Handle;
361 } CSRSS_CLOSE_HANDLE_REQUEST, *PCSRSS_CLOSE_HANDLE_REQUEST;
362
363 typedef struct
364 {
365   HANDLE Handle;
366 } CSRSS_VERIFY_HANDLE_REQUEST, *PCSRSS_VERIFY_HANDLE_REQUEST;
367
368 typedef struct
369 {
370   HANDLE Handle;
371   DWORD ProcessId;
372 } CSRSS_DUPLICATE_HANDLE_REQUEST, *PCSRSS_DUPLICATE_HANDLE_REQUEST;
373
374 typedef struct
375 {
376   HANDLE Handle;
377 } CSRSS_DUPLICATE_HANDLE_REPLY, *PCSRSS_DUPLICATE_HANDLE_REPLY;
378
379 #define CONSOLE_HARDWARE_STATE_GET 0
380 #define CONSOLE_HARDWARE_STATE_SET 1
381
382 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
383 #define CONSOLE_HARDWARE_STATE_DIRECT      1
384
385 typedef struct
386 {
387   HANDLE ConsoleHandle;
388   DWORD SetGet; /* 0=get; 1=set */
389   DWORD State;
390
391 } CSRSS_CONSOLE_HARDWARE_STATE, *PCSRSS_CONSOLE_HARDWARE_STATE;
392
393 typedef struct
394 {
395   HANDLE ConsoleHandle;
396   HWND   WindowHandle;
397 } CSRSS_CONSOLE_WINDOW, *PCSRSS_CONSOLE_WINDOW;
398
399 #define CSRSS_MAX_WRITE_CONSOLE_REQUEST       \
400       (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(CSRSS_WRITE_CONSOLE_REQUEST))
401
402 #define CSRSS_MAX_SET_TITLE_REQUEST           (MAX_MESSAGE_DATA - sizeof( HANDLE ) - sizeof( DWORD ) - sizeof( ULONG ) - sizeof( LPC_MESSAGE ))
403
404 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR   (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST ))
405
406 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB   ((MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST )) / 2)
407
408 #define CSRSS_MAX_READ_CONSOLE_REQUEST        (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_READ_CONSOLE_REQUEST ))
409
410 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR    (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST))
411
412 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB  (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST))
413
414 /* WCHARs, not bytes! */
415 #define CSRSS_MAX_TITLE_LENGTH          80
416
417 #define CSRSS_CREATE_PROCESS                (0x0)
418 #define CSRSS_TERMINATE_PROCESS             (0x1)
419 #define CSRSS_WRITE_CONSOLE                 (0x2)
420 #define CSRSS_READ_CONSOLE                  (0x3)
421 #define CSRSS_ALLOC_CONSOLE                 (0x4)
422 #define CSRSS_FREE_CONSOLE                  (0x5)
423 #define CSRSS_CONNECT_PROCESS               (0x6)
424 #define CSRSS_SCREEN_BUFFER_INFO            (0x7)
425 #define CSRSS_SET_CURSOR                    (0x8)
426 #define CSRSS_FILL_OUTPUT                   (0x9)
427 #define CSRSS_READ_INPUT                    (0xA)
428 #define CSRSS_WRITE_CONSOLE_OUTPUT_CHAR     (0xB)
429 #define CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB   (0xC)
430 #define CSRSS_FILL_OUTPUT_ATTRIB            (0xD)
431 #define CSRSS_GET_CURSOR_INFO               (0xE)
432 #define CSRSS_SET_CURSOR_INFO               (0xF)
433 #define CSRSS_SET_ATTRIB                    (0x10)
434 #define CSRSS_GET_MODE                      (0x11)
435 #define CSRSS_SET_MODE                      (0x12)
436 #define CSRSS_CREATE_SCREEN_BUFFER          (0x13)
437 #define CSRSS_SET_SCREEN_BUFFER             (0x14)
438 #define CSRSS_SET_TITLE                     (0x15)
439 #define CSRSS_GET_TITLE                     (0x16)
440 #define CSRSS_WRITE_CONSOLE_OUTPUT          (0x17)
441 #define CSRSS_FLUSH_INPUT_BUFFER            (0x18)
442 #define CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER  (0x19)
443 #define CSRSS_READ_CONSOLE_OUTPUT_CHAR      (0x1A)
444 #define CSRSS_READ_CONSOLE_OUTPUT_ATTRIB    (0x1B)
445 #define CSRSS_GET_NUM_INPUT_EVENTS          (0x1C)
446 #define CSRSS_REGISTER_SERVICES_PROCESS     (0x1D)
447 #define CSRSS_EXIT_REACTOS                  (0x1E)
448 #define CSRSS_GET_SHUTDOWN_PARAMETERS       (0x1F)
449 #define CSRSS_SET_SHUTDOWN_PARAMETERS       (0x20)
450 #define CSRSS_PEEK_CONSOLE_INPUT            (0x21)
451 #define CSRSS_READ_CONSOLE_OUTPUT           (0x22)
452 #define CSRSS_WRITE_CONSOLE_INPUT           (0x23)
453 #define CSRSS_GET_INPUT_HANDLE              (0x24)
454 #define CSRSS_GET_OUTPUT_HANDLE             (0x25)
455 #define CSRSS_CLOSE_HANDLE                  (0x26)
456 #define CSRSS_VERIFY_HANDLE                 (0x27)
457 #define CSRSS_DUPLICATE_HANDLE              (0x28)
458 #define CSRSS_SETGET_CONSOLE_HW_STATE       (0x29)
459 #define CSRSS_GET_CONSOLE_WINDOW            (0x2A)
460
461 /* Keep in sync with definition below. */
462 #define CSRSS_REQUEST_HEADER_SIZE (sizeof(LPC_MESSAGE) + sizeof(ULONG))
463
464 typedef struct
465 {
466   LPC_MESSAGE Header;
467   ULONG Type;
468   union
469   {
470     CSRSS_CREATE_PROCESS_REQUEST CreateProcessRequest;
471     CSRSS_CONNECT_PROCESS_REQUEST ConnectRequest;
472     CSRSS_WRITE_CONSOLE_REQUEST WriteConsoleRequest;
473     CSRSS_READ_CONSOLE_REQUEST ReadConsoleRequest;
474     CSRSS_ALLOC_CONSOLE_REQUEST AllocConsoleRequest;
475     CSRSS_SCREEN_BUFFER_INFO_REQUEST ScreenBufferInfoRequest;
476     CSRSS_SET_CURSOR_REQUEST SetCursorRequest;
477     CSRSS_FILL_OUTPUT_REQUEST FillOutputRequest;
478     CSRSS_READ_INPUT_REQUEST ReadInputRequest;
479     CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST WriteConsoleOutputCharRequest;
480     CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REQUEST WriteConsoleOutputAttribRequest;
481     CSRSS_FILL_OUTPUT_ATTRIB_REQUEST FillOutputAttribRequest;
482     CSRSS_SET_CURSOR_INFO_REQUEST SetCursorInfoRequest;
483     CSRSS_GET_CURSOR_INFO_REQUEST GetCursorInfoRequest;
484     CSRSS_SET_ATTRIB_REQUEST SetAttribRequest;
485     CSRSS_SET_CONSOLE_MODE_REQUEST SetConsoleModeRequest;
486     CSRSS_GET_CONSOLE_MODE_REQUEST GetConsoleModeRequest;
487     CSRSS_CREATE_SCREEN_BUFFER_REQUEST CreateScreenBufferRequest;
488     CSRSS_SET_ACTIVE_SCREEN_BUFFER_REQUEST SetActiveScreenBufferRequest;
489     CSRSS_SET_TITLE_REQUEST SetTitleRequest;
490     CSRSS_GET_TITLE_REQUEST GetTitleRequest;
491     CSRSS_WRITE_CONSOLE_OUTPUT_REQUEST WriteConsoleOutputRequest;
492     CSRSS_FLUSH_INPUT_BUFFER_REQUEST FlushInputBufferRequest;
493     CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER_REQUEST 
494     ScrollConsoleScreenBufferRequest;
495     CSRSS_READ_CONSOLE_OUTPUT_CHAR_REQUEST ReadConsoleOutputCharRequest;
496     CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REQUEST ReadConsoleOutputAttribRequest;
497     CSRSS_GET_NUM_INPUT_EVENTS_REQUEST GetNumInputEventsRequest;
498     CSRSS_REGISTER_SERVICES_PROCESS_REQUEST RegisterServicesProcessRequest;
499     CSRSS_EXIT_REACTOS_REQUEST ExitReactosRequest;
500     CSRSS_SHUTDOWN_PARAMETERS SetShutdownParametersRequest;
501     CSRSS_PEEK_CONSOLE_INPUT_REQUEST PeekConsoleInputRequest;
502     CSRSS_READ_CONSOLE_OUTPUT_REQUEST ReadConsoleOutputRequest;
503     CSRSS_WRITE_CONSOLE_INPUT_REQUEST WriteConsoleInputRequest;
504     CSRSS_CLOSE_HANDLE_REQUEST CloseHandleRequest;
505     CSRSS_VERIFY_HANDLE_REQUEST VerifyHandleRequest;
506     CSRSS_DUPLICATE_HANDLE_REQUEST DuplicateHandleRequest;
507     CSRSS_CONSOLE_HARDWARE_STATE ConsoleHardwareStateRequest;
508     CSRSS_CONSOLE_WINDOW ConsoleWindowRequest;
509   } Data;
510 } CSRSS_API_REQUEST, *PCSRSS_API_REQUEST;
511
512 typedef struct
513 {
514   LPC_MESSAGE Header;
515   NTSTATUS Status;
516   union
517   {
518     CSRSS_CREATE_PROCESS_REPLY CreateProcessReply;
519     CSRSS_CONNECT_PROCESS_REPLY ConnectReply;
520     CSRSS_WRITE_CONSOLE_REPLY WriteConsoleReply;
521     CSRSS_READ_CONSOLE_REPLY ReadConsoleReply;
522     CSRSS_ALLOC_CONSOLE_REPLY AllocConsoleReply;
523     CSRSS_SCREEN_BUFFER_INFO_REPLY ScreenBufferInfoReply;
524     CSRSS_READ_INPUT_REPLY ReadInputReply;
525     CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REPLY WriteConsoleOutputCharReply;
526     CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB_REPLY WriteConsoleOutputAttribReply;
527     CSRSS_GET_CURSOR_INFO_REPLY GetCursorInfoReply;
528     CSRSS_GET_CONSOLE_MODE_REPLY GetConsoleModeReply;
529     CSRSS_CREATE_SCREEN_BUFFER_REPLY CreateScreenBufferReply;
530     CSRSS_GET_TITLE_REPLY GetTitleReply;
531     CSRSS_WRITE_CONSOLE_OUTPUT_REPLY WriteConsoleOutputReply;
532     CSRSS_READ_CONSOLE_OUTPUT_CHAR_REPLY ReadConsoleOutputCharReply;
533     CSRSS_READ_CONSOLE_OUTPUT_ATTRIB_REPLY ReadConsoleOutputAttribReply;
534     CSRSS_GET_NUM_INPUT_EVENTS_REPLY GetNumInputEventsReply;
535     CSRSS_SHUTDOWN_PARAMETERS GetShutdownParametersReply;
536     CSRSS_PEEK_CONSOLE_INPUT_REPLY PeekConsoleInputReply;
537     CSRSS_READ_CONSOLE_OUTPUT_REPLY ReadConsoleOutputReply;
538     CSRSS_WRITE_CONSOLE_INPUT_REPLY WriteConsoleInputReply;
539     CSRSS_GET_INPUT_HANDLE_REPLY GetInputHandleReply;
540     CSRSS_GET_OUTPUT_HANDLE_REPLY GetOutputHandleReply;
541     CSRSS_DUPLICATE_HANDLE_REPLY DuplicateHandleReply;
542     CSRSS_CONSOLE_HARDWARE_STATE ConsoleHardwareStateReply;
543     CSRSS_CONSOLE_WINDOW ConsoleWindowReply;
544   } Data;
545 } CSRSS_API_REPLY, *PCSRSS_API_REPLY;
546
547 #endif /* __INCLUDE_CSRSS_CSRSS_H */