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